【问题标题】:WPF Control OverrideMetadata: specify default value to come from resourceWPF Control OverrideMetadata:指定默认值来自资源
【发布时间】:2023-03-05 15:19:01
【问题描述】:

我想为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 的样子(在主题\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>

【问题讨论】:

    标签: wpf controls


    【解决方案1】:

    嗯,应该多考虑 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-22
      • 1970-01-01
      • 1970-01-01
      • 2015-09-26
      • 2018-11-13
      相关资源
      最近更新 更多