TemplatePart特性的作用
看wp控件的源代码时发现TemplatePart特性,于是在百度上查了查:
http://blog.csdn.net/wushang923/article/details/9224533
TemplatePart(Name="PART_Decrease", Type=typeof(RepeatButton))
一直没明白这是干嘛用的,搜了一下,记载一下。
以Button的定义为例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | namespace System.Windows.Controls { // Summary: // Represents a button control, which reacts to the Click event. [TemplatePart(Name = "Normal State" , Type = typeof (Storyboard))] [TemplatePart(Name = "MouseOver State" , Type = typeof (Storyboard))] [TemplatePart(Name = "RootElement" , Type = typeof (FrameworkElement))] [TemplatePart(Name = "Pressed State" , Type = typeof (Storyboard))] [TemplatePart(Name = "FocusVisualElement" , Type = typeof (UIElement))] [TemplatePart(Name = "Disabled State" , Type = typeof (Storyboard))] public class Button : ButtonBase { // Summary: // Initializes a new instance of the Button class. public Button(); // Summary: // Apply a template to the Button. protected override void OnApplyTemplate(); // // Summary: // Called when the IsEnabled property changes. // // Parameters: // isEnabled: // New value of the IsEnabled property. protected override void OnIsEnabledChanged( bool isEnabled); } } |
[TemplatePart(Name = "Normal State", Type = typeof(Storyboard))] 这种东东是做什么用的 , 其实这是一种契约 , 是一种推荐的控件设计模式(只是推荐) , 意思是告诉要来写ControlTemplate的用户 , 你的ControlTemplate中需要有一个x:Name为“Normal State” , 类型为Storyboard , 当然这个类型可以是继承来的, 为什么一定要包含这些契约规定的元素 , 因为逻辑部分对这些东西进行了引用,它们将对控件的默认行为起着关键作用, 可以理解为这个控件的最基本元素 , 是实现默认行为的最小集合, 自然,你的ControlTemplate中如果没有包含契约中的内容 , 则相应的逻辑将无法实现。
所以说白了,就是提示用的.....这么写比较规范。
posted on 2014-02-08 10:32 632575987 阅读(1182) 评论(0) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步