2011-06-02 41 views
0

所以,我对Silverlight开发相当陌生,我试图找出并使用Caliburn.Micro框架。我知道CM使用约定来将视图模型中的属性与视图中的元素进行匹配,并且可以在CM的ConventionManager类中找到默认约定。我有一个名为“Libraries”的TreeView(使用Silverlight Toolkit),并且我已经成功地将我的视图模型中的ObservableCollection类型的属性绑定到了TreeView。该物业也被命名为“图书馆”,所以CM完成了其余的工作。使用Caliburn.Micro绑定属性和方法到单个元素

现在,我想在视图模型中创建一个属性,该属性将使用TreeView的SelectedItem进行设置。我应该如何使用CM的约定来做到这一点?我应该命名该物业?

最后,我希望视图模型中的一个方法在TreeView的SelectedItemChanged事件被触发时被调用。我应该如何命名该方法,以便通过约定来完成?

任何人都可以帮忙吗?

艾森伯格... ...艾森伯格(以我最好的本·斯坦扮演)

谢谢, 大卫

编辑:我还应该注意到,我已经修改了CM组件添加以下行到ConventionsManager的构造,因为它是以前从Silverlight的版本CM DLL的除外:

AddElementConvention(TreeView.ItemsSourceProperty, "SelectedItem", "SelectedItemChanged");

回答

1

你应该能够创建一个名为SelectedL的公共属性库或ActiveLibrary和CM将完成剩下的工作。如果不工作,你总是可以依傍的行动:

cal:Message.Attach="[Event SelectedItemChanged] = [Action SelectedLibrary($eventArgs)]" 

编辑:你需要的属性setter和火的方法?

+0

德里克,谢谢你的帮助。我尝试命名属性“ActiveLibrary”和“SelectedLibrary”无济于事。我能够使用Message.Attach在视图模型中启动该方法,但是我试图更好地理解这些约定。我也明白,设置财产和解雇方法是多余的,但同样,这对我来说是一个学习练习。 – Daveed 2011-06-03 01:11:41

+0

该约定可能不适用于TreeView控件。如果你尝试使用ListBox应该是可行的。我想开火的方法会给你更多的选择,你可以通过的东西。 – 2011-06-03 02:11:57

+0

模型不能绑定到TreeView的SelectedItem属性,因此没有相同的约定。如果你使用Selector类型控制,它允许数据绑定,CM支持这里提到的约定。直到使用Derek分享的内容。 – Chandermani 2011-06-03 12:20:24