PaN*_*1Me 40 wpf user-controls mvvm controltemplate
我最近做了一个UserControl,花了很长时间,因为我不得不使用自定义依赖属性等等...
无论如何,它只是一堆3个控件:TextBox,Popup with Hierarchical Tree.
现在我意识到我可能只能写一个ControlTemplate.那么使用UserControl有什么好处?
Ken*_* K. 58
这里有三种情况需要考虑:UserControl,ControlTemplate和自定义 Control.(我猜测DataTemplate不需要解释)
一个自定义的控制是你,当你创建一个新的UI组件的基本功能提供的东西.这有各种各样的优点和缺点,但是,例如,如果你想要ItemsControl的自定义选择行为,你最好通过继承Selector或MultiSelector(wpftoolkit DataGrid这样做)来做.此外,如果您想要一个包含新DependencyProperty的对象,您在大多数情况下都会从Control派生.
这里包含的wpf原则是"无视"控制范例,或者"确保有人模仿你的控件,或者至少让它在你自己的模板场景中表现得很好".自定义控件通常在创建时考虑了可重用性,通常作为框架dll的一部分.
甲的ControlTemplate本质上是一个视觉更换树的描述,并且可以显式地设置FrameworkElements,或作为样式的一部分.当您的目标主要是制作应用程序并完成它时,这是您应该瞄准的选项.如果你能够获得绑定和触发器(以及可能包含Style本身),你可以直观地使用ControlTemplate做任何事情.所有这些都可以被声明为重用的资源,为您的应用程序提供一个共同的"主题".
一个用户控件是一个自包含的复合控制,与部分在设计师单独可编辑的,而且是最好的使用,如果你需要看你的组件,并在设计管理.另一方面,ControlTemplate不会在设计器中公开其组件以进行操作(尽管它是可见的).您通常为客户详细信息页面或产品显示浏览器创建UserControl,或者您不想创建完整控件的任何情况,但需要具有完整设计器支持的详细视图.
这里的一个特例是你使用MVVM模式.许多优秀的MVVM实现使用UserControls作为Views,ControlTemplates和Styles作为这些视图使用的资源.MVVM实践还最大限度地减少了对自定义控件的需求,并具有许多其他优点.
(有关MVVM的更多信息,其中包括Google for Josh Smith,Sacha Barber和Karl Shifflett的精彩文章)
| 归档时间: |
|
| 查看次数: |
19488 次 |
| 最近记录: |