CanExecute
カスタム コマンド (Josh Smith の) で強制的に呼び出す方法を知っている人はいますRelayCommand
か?
通常、CanExecute
UI で対話が発生するたびに呼び出されます。何かをクリックすると、コマンドが更新されます。
CanExecute
舞台裏でタイマーによって条件がオン/オフされている状況があります。これはユーザーの操作によって駆動されないためCanExecute
、ユーザーが UI を操作するまで呼び出されません。最終結果はButton
、ユーザーがクリックするまで有効/無効のままです。クリック後、正しく更新されます。が有効に表示されることがありButton
ますが、ユーザーがクリックすると、起動する代わりに無効に変わります。
タイマーが影響するプロパティを変更したときに、コードで強制的に更新するにはどうすればよいCanExecute
ですか? に影響するプロパティでPropertyChanged
( ) を起動しようとしましたが、効果はありませんでした。INotifyPropertyChanged
CanExecute
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; }