我通过在线模板创建了一个新的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;
但是,我想知道对此的正确解决方案是什么以及为什么模板不起作用。我错过了什么,做错了什么或什么?请创建一个新的解决方案,并使用我做的模板,并告诉我发生了什么!谢谢!
答案 0 :(得分:0)
作者修复了该问题,并于昨天发布了该模板的4.1版本。