WPF控制OverrideMetadata:指定来自资源的默认值

时间:2016-01-24 14:55:38

标签: wpf controls

我想将资源指定为BorderBrushProperty的控件的默认值。刷子的原因是我在XAML中定义的LinearGradientBrush。所以我在静态CTOR(第3行)中寻找类似的东西:

    static Gauge()
    {
        DefaultStyleKeyProperty.OverrideMetadata(typeof (Gauge), new FrameworkPropertyMetadata(typeof (Gauge)));
        BorderThicknessProperty.OverrideMetadata(typeof (Gauge), new FrameworkPropertyMetadata(new Thickness(16)));
        BorderBrushProperty.OverrideMetadata(typeof (Gauge), new FrameworkPropertyMetadata("OuterFrameStroke"));
    }

这就是我的XAML的样子(在themes \ generic.xaml中):

<LinearGradientBrush x:Key="OuterFrameStroke" EndPoint="0.5,1" StartPoint="0.5,0">
    <GradientStop Color="#FF636060" Offset="1" />
    <GradientStop Color="#FF5F5C5C" Offset="0" />
    <GradientStop Color="#FFEEDEDE" Offset="0.35" />
    <GradientStop Color="#FFA09595" Offset="0.705" />
</LinearGradientBrush>

1 个答案:

答案 0 :(得分:0)

好吧,应该想到2秒钟。当然我可以在我的模板中设置这个默认属性

<Style TargetType="gauge:Gauge">
    <Setter Property="BorderBrush">
        <Setter.Value>
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                <GradientStop Color="#FFA3AFD6" Offset="0.321" />
                <GradientStop Color="#FF8399A9" Offset="0.674" />
                <GradientStop Color="#FF718597" Offset="0.375" />
                <GradientStop Color="#FF617584" Offset="1" />
            </LinearGradientBrush>
        </Setter.Value>
    </Setter>