我正在尝试创建一个继承自Button的自定义控件。在ControlTemplate中,我想将MyCustomButton显示为Circle,Square或其他任何形状的形状。
我有一个DependencyProperty - ButtonShape - 这是一个枚举类型,它指示按钮形状的类型。当用户更改ButtonShape时,必须更改按钮的外观。
我知道如何为我的自定义按钮创建一个ControlTemplate,使其看起来像圆形或方形或椭圆形或任何其他形状,但我不知道如何处理更改的部分。
也许我应该创建其他ControlTemplates并在OnButtenShapeChanged事件中设置相应的模板,但我认为这不是一个正确的方法。
任何想法都将不胜感激。感谢。
答案 0 :(得分:1)
我认为最简单的方法是define triggers in your ControlTemplate
。
您需要在(单个)ControlTemplate
中定义三个形状,并根据ButtonShape
属性的状态显示/隐藏所需的形状。
答案 1 :(得分:0)
我覆盖ControlTemplate
属性元数据并添加Coerce回调。然后,在Coerce阶段,返回您想要使用的当前ControlTemplate(基于您的属性)。
在ButtonShape属性值更改后的回调中,您需要调用CoerceValue()
来更新ControlTemplate。
这将禁用消费者设置自己的控制模板的能力,但听起来这可能不是问题。
以下是关于依赖属性强制的一些基础知识:http://msdn.microsoft.com/en-us/library/ms745795(v=vs.110).aspx#Coerce_Value_Callbacks_and_Property_Changed_Events