据我所知,下面的代码可以从Relay/ICommand命令更改为Delegate命令,并且仍然以相同的方式绑定命令!如果我错了,它们的区别和用途是什么?
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);
}
}
}发布于 2013-06-07 23:59:41
框架本身既不存在DelegateCommand,也不存在RelayCommand。它们是由第三方库提供的。
两者都是ICommand的实现,它通过接受委托并使用委托来提供ICommand实现来工作。因此,这两个类具有相同的意图,并且基本上以相同的方式工作。
至于差异--可能会有一些细微的差异,这取决于您使用的是哪种框架。例如,Prism的DelegateCommand也有IActiveAware的概念,它用于构建复合命令。
https://stackoverflow.com/questions/16988250
复制相似问题