在尝试学习GameLibrary示例应用程序的源代码时,我看到了这样的一行:
ConventionManager.AddElementConvention<Rating>(Rating.ValueProperty, "Value", "ValueChanged");
查看Caliburn的来源,但无法真正了解哪些元素约定。
有人可以简单描述一下吗?
答案 0 :(得分:7)
ConventionManager.AddElementConvention
允许您为每个类型元素建立约定系统使用的一组“默认”设置。
在上面提到的情况中,Rating.ValueProperty
的第一个参数值告诉约定系统该元素的默认可绑定属性是什么。因此,如果我们在Rating
控件上有一个约定匹配,我们就会针对ValueProperty
设置绑定。
第二个参数表示要在Action绑定中使用的默认属性。因此,如果您使用ElementName
创建一个指向Rating
控件的操作绑定,但未指定该属性,则会回退到Value
属性。
最后,thrid参数表示控件的默认事件。因此,如果我们将操作附加到评级控件,但未指定事件来触发该操作,系统将回退到ValueChanged
事件。
这些元素约定允许开发人员在各种情况下提供尽可能多的信息,允许框架将缺少的细节填入适当的位置。