我有一个行为,其中包含多个命令属性。通常我使用MVVM Light,在我的视图模型中使用路由命令并绑定到这些命令。然而,这个项目使用Caliburn.Micro,所以我正在尝试按照Caliburn.Micro的方式进行操作。在Message.Attach上是否有一些语法可以做到这一点(有关Message.Attach解析器的文档是否有用)?
我是否需要修改行为以公开事件,以使其与Caliburn.Micro兼容?
我是否需要修改行为以公开事件,以使其与Caliburn.Micro兼容?
Caliburn.Micro有一种用于视图/视图模型通信的机制,作为命令的替代品,称为Actions。您应该能够将Action参数设置为现有命令的Execute
委托,并在必要时设置适当的视图控件属性(例如IsEnabled
)以绑定到您的CanExecute
委托。
public YourEvent
{
...
}
您的视图将发布这些自定义事件 - 它不关心谁在监听,只关心事件是否被发布。
public YourCodeBehind
{
public Button_Clicked(...)
{
this.Events.Publish(new YourEvent());
...
}
....
}
通过添加 IHandle,您的 ViewModels 将被设置为处理这些事件。
[Export(typeof(...))]
public class YourViewModel : IShell, IHandle<YourEvent>
{
[ImportingConstructor]
public YourViewModel(IEventAggregator events)
{
events.Subscribe(this);
...
}
public Handle(YourEvent event)
{
...
}
...
{