我们使用Caliburn.Micro在一个新的Silverlight项目和其他工作伟大.内置的约定将按钮单击事件绑定到viewmodel,但我不知道在datagrids和comboBox上处理selectionChanged事件的最佳方法是什么.
目前,我绑定到所选项目并调用自定义逻辑,但我觉得这是一个代码的气味,我应该分离属性和selectedChange事件的设置.但是如果我分开这些,我如何通过命令将选择改变的事件绑定到我的viewmodel?或EventTrigger?还是下面的代码可以接受?这是一个很小的变化,但我在这个逻辑无处不在.
private Foo _selectedFoo; public Foo SelectedFoo { get { return _Foo; } set { if (_Foo != null && _Foo.Equals(value)) return; _Foo = value; NotifyOfPropertyChange("SelectedFoo"); NotifyOfPropertyChange("CanRemove"); LoadRelatedBars(); } }
解决方法
我经常使用这种技术,我觉得很舒服.
我发现VM完全可以对自己的状态进行更改,而不需要外部actor(这也是View,但也可能是另外一个组件)来设置新的状态.改变.
我发现VM完全可以对自己的状态进行更改,而不需要外部actor(这也是View,但也可能是另外一个组件)来设置新的状态.改变.
但是,如果您真的想要使用Message.Attach附加属性将视图中的事件挂接到VM中的操作:
cal:Message.Attach="[Event SelectionChanged] = [OnSelectionChangedAction]"
(另见http://caliburnmicro.codeplex.com/wikipage?title=All%20About%20Actions)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。