码迷,mamicode.com
首页 > 其他好文 > 详细

TemplatePart用法说明

时间:2018-08-30 18:22:57      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:prot   用户   元素   base   rop   ges   控件   集合   parameter   

原文:TemplatePart用法说明

TemplatePart(Name="PART_Decrease", Type=typeof(RepeatButton))

一直没明白这是干嘛用的,搜了一下,记载一下。

以Button的定义为例:

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中如果没有包含契约中的内容 , 则相应的逻辑将无法实现。

所以说白了,就是提示用的.....这么写比较规范。

TemplatePart用法说明

标签:prot   用户   元素   base   rop   ges   控件   集合   parameter   

原文地址:https://www.cnblogs.com/lonelyxmas/p/9561358.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!