MVVMを使用してWPFでアプリケーションを開発していますが、ICommandオブジェクトでスタックしています。
いくつかのボタンを含むウィンドウがあるので、以下のようにXAMLのそれぞれのICommandにバインドします。
<Button Command="{Binding DoSomethingCommand}" Content="Do Something" />
次に、ビューモデルクラスで次のように記述しました。
public class MyViewModel : ObservableObject
{
private bool isDoSomethingButtonEnabled = false;
....
public ICommand DoSomethingCommand
{
get;
private set;
}
....
....
public MyViewModel()
{
DoSomethingCommand = new DelegateCommand<String>(this.OnDoSomething, this.CanDoSomething);
}
private void OnDoSomething(String arg)
{
}
private bool CanDoSomething(String arg)
{
return isDoSomethingButtonEnabled;
}
....
}
したがって、ウィンドウを最初に開いたときにボタンを有効にしない必要があるため、変数isDoSomethingButtonEnabled
をに設定しましたfalse
。そして、それは機能し、ボタンは最初は無効になっていますが、私の問題は、実行時に変数isDoSomethingButtonEnabled
をに変更しても、ボタンがまだ無効になっていることです。true
isDoSomethingButtonEnabled
変数をに変更した後、いくつかのテストを実行しtrue
、の結果を出力するDoSomethingCommand.CanExecute()
と、「true」と表示されます。
では、ボタンを有効にするにはどうすればよいですか?
前もって感謝します