使用VS2010在线模板"WPF MVVM project template",可以执行更改不起作用吗?



我通过Online Templates->WPF in VS2010->WPF MVVM项目模板创建了一个新的WPF MVVM应用程序。我在"刷新"按钮旁边创建了一个标记为"启用刷新?"的复选框,我想在点击"刷新"按钮时启用/禁用"刷新"按钮。我将复选框的IsChecked属性绑定到aMainWindowViewModel属性,我称之为CanRefreshDate,它在setter中引发RaisePropertyChanged(()=>CanRefreshDate);。同样在MainWindowViewModel中,我添加了我新创建的CanExecuteRefreshDate(),它返回CanRefreshDate属性的bool值。然而,当我点击复选框,按钮"刷新"从来没有启用/禁用匹配。解决这个问题的正确方法是什么,这是模板中的疏忽还是什么?

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

Xaml:

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

MainWindowViewModel.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()在DelegateCommand.cs中拼错了RasieCanExecuteChanged(),并进行了更改。我能够通过删除RaiseCanExecuteChanged()和修改

来实现这一切。
public event Handler CanExecuteChanged;  

:

public event EventHandler CanExecuteChanged
{
    add { CommandManager.RequerySuggested += value; }
    remove { CommandManager.RequerySuggested -= value; }
}

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

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

相关内容

  • 没有找到相关文章

最新更新