ICommandインターフェイスのカスタム実装でRaiseCanExecuteChanged、外部から呼び出すことができるメソッドがあり、CanExecuteメソッドを呼び出して再評価し、コマンド(およびボタン)の状態を変更するという奇妙な動作を見つけました。
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プロパティにバインドされます。
誰かが私にこれを説明できますか? ありがとうございました。