Tho*_*que 20 c# icommand windows-8 windows-runtime
我开始使用Metro风格的应用程序(我知道我们不应该将它称为Metro,但我永远不会记得它应该被称为...),而我正在实现一个DelegateCommand用于MVVM 的类.在WPF中,ICommand.CanExecuteChanged事件通常像这样实现:
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
Run Code Online (Sandbox Code Playgroud)
但是这个CommandManager类在WinRT中不存在......还有别的东西吗?或者我们是否应该自己明确触发此事件?
Jer*_*xon 13
在WinRT中,您必须手动更新/引发CanExecuteChanged.没有CommandManager可以全局执行此操作.您可以将此视为颈部疼痛,或者由于CanExecute不会被持续调用而导致严重的性能提升.它确实意味着您必须考虑在不必要之前将级联属性更改.但事实就是如此.手册.
public void RaiseCanExecuteChanged()
{
if (CanExecuteChanged != null)
CanExecuteChanged(this, EventArgs.Empty);
}
Run Code Online (Sandbox Code Playgroud)