【发布时间】:2017-07-11 05:19:36
【问题描述】:
我目前正在将一个项目迁移到 PostSharp 以删除大量样板代码,其中大部分进展非常顺利,但我对如何强制命令重新检查它是否CanExecute 感到困惑。我希望 PostSharp 会像检查属性一样检查命令以检查依赖关系,这是一个极简示例
[NotifyPropertyChanged]
public class MyWindowViewModel
{
/// Anything bound to this refreshes just fine as expected
public ObservableCollection<SomeType> Documents = new ObservableCollection<SomeType>();
[Command]
public ICommand AddDocumentCommand { get; set; }
public void ExecuteAddDocument () { Documents.Add(new SomeType()); }
[Command]
public ICommand CloseDocumentCommand { get; set; }
public bool CanExecuteCloseDocument () => Documents.Any();
public void ExecuteCloseDocument () { Documents.Remove(Documents.Last()); }
}
在开始时集合是空的并且附加到关闭命令的按钮按预期显示为灰色,但是通过附加到AddDocument 的按钮添加文档不会激活关闭文档按钮,什么是适当的方法来完成我需要的? PostSharp 是否仅将分配而不是方法调用视为更改,还是完全不同?
【问题讨论】: