ResourceDictionary对Self的模板引用

时间:2016-07-12 09:53:22

标签: c# wpf xaml templates resourcedictionary

我有一个CustomButton(我们称之为MetroButton),它派生自Button并添加了3个属性:Size,ImageSource和Text。大小同时描述控件的宽度和高度。

MetroButtons由一个模板组成 - 现在我想将模板分割成一个独立的ResourceDictionary.xaml - 但是如何将Button的宽度和高度引用到自定义属性“Size”?

<ControlTemplate TargetType="Button">
        <Border x:Name="_border"
                Width="{Binding Size,
                                ElementName=_metroButton,
                                UpdateSourceTrigger=PropertyChanged,
                                Mode=TwoWay}"
                Height="{Binding Size,
                                 ElementName=_metroButton,
                                 UpdateSourceTrigger=PropertyChanged,
                                 Mode=TwoWay}"
                Background="{StaticResource DefaultButtonBackgroundColor}"
                BorderBrush="{StaticResource DefaultButtonBorderColor}"
                BorderThickness="{TemplateBinding BorderThickness}">

目前我能够使用ElementName,因为模板直接在MetroButton类中定义 - 如果模板在类外定义,则没有机会引用ElementName(afaik) - 并使用

RelativeSource={RelativeSource Self}

也不会导致预期的结果 - 那么样式根本不适用。

任何解决方案?

1 个答案:

答案 0 :(得分:1)

RelativeSource = {RelativeSource AncestorType = {x:Type yourButton}

相关问题