据我所知,下面的代码可以从 Relay/ICommand 命令更改为 Delegate 命令,并且仍然以相同的方式绑定(bind)命令!如果我错了,它们的区别和用途是什么。
private DelegateCommand something;
public DelegateCommand Something
这里是完整的实现
private RelayCommand something;
public ICommand Something
{
get
{
if (something == null)
something = new RelayCommand(SomethingMethod, CanSomething);
return something;
}
}
private bool CanSomething(object parameter)
{
//just for readability return true
return true;
}
private void SomethingMethod(object parameter)
{
using (DatabaseContext context = new DatabaseContext())
{
try { }
catch(Exception ex)
{
throw new ApplicationException(string.Format("Something {0} to {1}", file, directory), ex);
}
}
}
最佳答案
都不是DelegateCommand
也不RelayCommand
存在于框架本身。它们由第三方图书馆提供。
两者都是 ICommand
的实现它通过接受委托(delegate)并使用它来提供 ICommand
来工作执行。因此,这两个类具有相同的意图,并且以基本相同的方式工作。
至于差异 - 可能存在一些细微差异,具体取决于您使用的框架。例如,Prism 的 DelegateCommand<T>
还有一个概念 IActiveAware
,用于构建复合命令。
关于c# - Relay/ICommand 与 DelegateCommand——区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16988250/