IMO, CommandBindings действительно плохо реализованы в WPF. Вы должны обойти тот факт, что система сохраняет WeakReference для вашего элемента управления, если она имеет CommandBinding, даже когда элемент управления закрыт.
В Интернете вы увидите множество примеров того, как настроить привязку CommandBinding в коде XAML. Проблема в том, что все эти примеры будут представлять проблемы с производительностью в любом приложении, куда они вставлены. Привязки команд никогда не исчезнут сами по себе. По крайней мере, ненадолго.
Решение:
A) Не устанавливайте привязки команд в XAML. Вы должны использовать код позади. Предложите использовать конструктор после вызова InitializeComponent (). Используйте this.CommandBindings.Add (), чтобы добавить CommandBindings с кодом.
B) обрабатывает событие Closed () вашего Window или Control и вызывает this.CommandBindings.Clear ().
Это единственный способ, которым я смог надежно заставить CommandBindings прекратить стрельбу. Я думаю, что это нелепый способ реализации этой функции Microsoft. Тот факт, что многие примеры в Интернете учат вас объявлять CommandBindings в XAML, только усугубляет проблему.