![](/img/trans.png)
[英]Catch Exception thrown by ASYNC DelegateCommand.Execute() when used as ICommand
[英]Relay/ICommand vs DelegateCommand — Differences
据我所知,下面的代码可以从Relay / ICommand Command更改为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);
}
}
}
DelegateCommand
和RelayCommand
都不存在于框架本身中。 它们由第三方图书馆提供。
两者都是ICommand
的实现,它通过接受委托并使用它来提供ICommand
实现来工作。 因此,两个类具有相同的意图,并且以基本相同的方式工作。
至于差异 - 可能存在一些微妙的差异,具体取决于您使用的框架。 例如,Prism的DelegateCommand<T>
也有一个IActiveAware
概念,用于构建复合命令。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.