使用VS2010在线模板“WPF MVVM项目模板”,CanExecuteChanged无法正常工作?

时间:2013-02-27 19:32:57

标签: wpf templates mvvm canexecute

我通过在线模板创建了一个新的WPF MVVM应用程序 - > VSF10中的WPF-> WPF MVVM项目模板。我创建了一个标有“Refresh Enabled?”的复选框。在“刷新”按钮旁边,我想在单击时启用/禁用“刷新”按钮。我将复选框的IsChecked属性绑定到我调用aMainWindowViewModel的{​​{1}}属性,并在其setter中引发CanRefreshDate。同样在RaisePropertyChanged(()=>CanRefreshDate);中,我添加了新创建的MainWindowViewModel,它返回了CanExecuteRefreshDate()属性的bool。但是,当我单击该复选框时,永远不会启用/禁用“刷新”按钮以匹配。解决这个问题的正确方法是什么,这是模板中的疏忽还是什么?

以下是我对模板代码的修改:

的Xaml:

CanRefreshDate

MainWindowViewModel.cs:

<CheckBox Content="Refresh Enabled?" 
          IsChecked="{Binding CanRefreshDate}"/>

我注意到该模板在DelegateCommand.cs中有private bool _CanRefreshDate; public bool CanRefreshDate { get { return _CanRefreshDate; } set { if (_CanRefreshDate != value) { _CanRefreshDate = value; RaisePropertyChanged(() => CanRefreshDate); } } } public ICommand RefreshDateCommand { get { return new DelegateCommand(OnRefreshDate, CanExecuteRefreshDate); } } private bool CanExecuteRefreshDate() { return CanRefreshDate; } 拼写错误的RaiseCanExecuteChanged()并进行了更改。通过删除RasieCanExecuteChanged()并修改

,我能够完成所有工作
RaiseCanExecuteChanged()

到:

public event Handler CanExecuteChanged;  

但是,我想知道对此的正确解决方案是什么以及为什么模板不起作用。我错过了什么,做错了什么或什么?请创建一个新的解决方案,并使用我做的模板,并告诉我发生了什么!谢谢!

1 个答案:

答案 0 :(得分:0)

作者修复了该问题,并于昨天发布了该模板的4.1版本。