使用Caliburn.Micro,我可以有一个IsEnabled属性来定义按钮的防护状态:
<Button cal:Message.Attach="DoSomething" Content="Do it"/>
在ViewModel中
public bool CanDoSomething { get {...} }
public void DoSomething() {... }
我的问题是在功能区菜单中有很多按钮和相应的操作。几乎所有按钮都有相同的保护逻辑,例如“如果应用程序不忙于一些长时间运行的操作,则启用”。我的虚拟机往往会被许多具有相同内容的"CanXYZ“属性弄得乱七八糟。当然,所有的防护属性都可以委托给一个包含实际逻辑的单一属性,但是有没有办法避免所有这些单一的防护属性呢?就像这样
<Button cal:Message.Attach="DoSomething" cal:Message.Attach.Guard="IsAppIdle" Content="Do it"/>
先谢谢你...
发布于 2014-04-11 20:57:38
这样做并不是不可能,但是DoSomething
被连接到ViewModel
中,Caliburn Micro的工作方式是在数据上下文中查找属性。我可以看到这以一个静态类结束,它可以在调用RaiseCanExecute
时调用这个静态类。
Attach
也是一个附加属性。您必须将该属性更改为包含Guard
的类,以便最终编写我建议的内容或扩展caliburn micro的Message
类。
https://stackoverflow.com/questions/23009607
复制相似问题