2016-01-24 151 views
0

我想指定一个资源作为我的BorderBrushProperty控件的默认值。笔刷的原因是我在XAML中定义的LinearGradientBrush。所以,我在找我的静态CTOR这样的事情(3号线):WPF控件OverrideMetadata:指定默认值来自资源

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> 

回答

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>