【发布时间】:2015-07-12 04:42:18
【问题描述】:
如何使用ICommand接口中的CanExecute方法?
在我的示例中,我有一个 SaveCommand,仅当对象可保存时才启用它。我的 Savebutton 的 XAML 代码如下所示:
<Button Content="Save" Command="{Binding SaveCommand, Mode=TwoWay}" />
这是我的存档类的代码:
class Save : ICommand
{
public MainWindowViewModel viewModel { get; set; }
public Save(MainWindowViewModel viewModel)
{
this.viewModel = viewModel;
}
public bool CanExecute(object parameter)
{
if (viewModel.IsSaveable == false)
return false;
return true;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
viewModel.Save();
}
}
ViewModel 中的保存属性如下所示:
public ICommand SaveCommand
{
get
{
saveCommand = new Save(this);
return saveCommand;
}
set
{
saveCommand = value;
}
}
这个构造不起作用。当 isSaveable 为 true 时,按钮不会启用自身。
【问题讨论】:
-
绑定到命令时是否需要双向绑定?
-
没想到我会把整个视图模型传递给命令(现在我不知道是什么给了我这个想法!)。即使与我的问题无关,这里看到的示例代码也从废品堆中保存了我的 UI 设计的一个关键部分。
标签: c# wpf xaml mvvm canexecute