我们在一个新的 Silverlight 项目中使用了 Caliburn.Micro,一切都运行良好。内置约定将按钮单击事件绑定到 viewModel,但我不确定处理数据网格和组合框上的 SelectionChanged 事件的最佳方法是什么。
目前,我正在绑定到所选项目并调用自定义逻辑,但我觉得这有点代码味道,我应该将属性的设置和 selectedChange 事件分开。但是如果我将它们分开,如何通过命令将选择更改事件绑定到我的 viewModel ?或者事件触发器?或者下面的代码可以接受吗?这是一个很小的改变,但我到处都这样做。
private Foo _selectedFoo;
public Foo SelectedFoo
{
get
{
return _Foo;
}
set
{
if (_Foo != null && _Foo.Equals(value)) return;
_Foo = value;
NotifyOfPropertyChange("SelectedFoo");
NotifyOfPropertyChange("CanRemove");
LoadRelatedBars();
}
}
我经常使用这种技术,并且感觉非常舒服。
我发现虚拟机对自己的状态变化做出反应非常好,不需要外部参与者(顺便说一下,它是视图,但也可以是另一个组件)来设置新状态,然后向虚拟机发出状态通知改变了。
但是,如果您确实愿意,可以使用 Message.Attach 附加属性将视图中的事件挂钩到 VM 中的操作:
cal:Message.Attach="[Event SelectionChanged] = [OnSelectionChangedAction]"
(也可以看看https://caliburnmicro.com/documentation/actions https://caliburnmicro.com/documentation/actions)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)