CanExecuteカスタム コマンド (Josh Smith の) で強制的に呼び出す方法を知っている人はいますRelayCommandか?
通常、CanExecuteUI で対話が発生するたびに呼び出されます。何かをクリックすると、コマンドが更新されます。
CanExecute舞台裏でタイマーによって条件がオン/オフされている状況があります。これはユーザーの操作によって駆動されないためCanExecute、ユーザーが UI を操作するまで呼び出されません。最終結果はButton、ユーザーがクリックするまで有効/無効のままです。クリック後、正しく更新されます。が有効に表示されることがありButtonますが、ユーザーがクリックすると、起動する代わりに無効に変わります。
タイマーが影響するプロパティを変更したときに、コードで強制的に更新するにはどうすればよいCanExecuteですか? に影響するプロパティでPropertyChanged( ) を起動しようとしましたが、効果はありませんでした。INotifyPropertyChangedCanExecute
XAML の例:
<Button Content="Button" Command="{Binding Cmd}"/>
コードビハインドの例:
private ICommand m_cmd;
public ICommand Cmd
{
    if (m_cmd == null)
        m_cmd = new RelayCommand(
            (param) => Process(),
            (param) => EnableButton);
    return m_cmd;
}
// Gets updated from a timer (not direct user interaction)
public bool EnableButton { get; set; }