我正在使用 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()
并显示“真”!
那么,我应该怎么做才能启用我的按钮?
先感谢您