我發現一個奇怪的行爲,在一個自定義執行的ICommand
接口我有RaiseCanExecuteChanged
方法,可以從外部調用,並導致調用和reevalute方法和更改命令的狀態(和按鈕):CanExecuteChanged事件的奇怪行爲
public void RaiseCanExecuteChanged()
{
if (_canExecuteChanged != null)
_canExecuteChanged(this, EventArgs.Empty);
}
然而,當事件被執行財產:
public event EventHandler CanExecuteChanged;
它沒有工作和CanExecuteChanged
是null
。
將其更改爲
private EventHandler _canExecuteChanged;
public event EventHandler CanExecuteChanged
{
add { _canExecuteChanged += value; }
remove { _canExecuteChanged -= value; }
}
它的工作原理之後。
該命令綁定到一個按鈕Command
屬性。
任何人都可以解釋這一點嗎?謝謝。
無論如何,WPF Control事件中不存在競爭條件。無論如何,每個事件都應在Dispatcher線程中觸發並訂閱/取消訂閱。 –