2010-07-02 43 views
1

我在我的自定义控制研究类创建依赖属性更改自己的属性数据点:不能在风格

public abstract class DataPoint : Control 
{ 
     public Color BaseColor 
     { 
      get { return (Color)GetValue(BaseColorProperty); } 
      set { SetValue(BaseColorProperty, value); } 
     } 

     public static readonly DependencyProperty BaseColorProperty = 
      DependencyProperty.Register("BaseColor", typeof(Color), typeof(DataPoint), new UIPropertyMetadata(Colors.DarkRed)); 

    // Other class stuff 
} 

然后,我创建其他自定义控制AreaDataPoint继承数据点:

public class AreaDataPoint : DataPoint 
{ 
     static AreaDataPoint() 
     { 
      DefaultStyleKeyProperty.OverrideMetadata(typeof(AreaDataPoint), new FrameworkPropertyMetadata(typeof(AreaDataPoint))); 
     } 

    // Other class stuff 
} 

在XAML我m试图将值分配给BaseColor属性,但它不起作用

<Style TargetType="{x:Type local1:AreaDataPoint}"> 
    <Setter Property="BaseColor" Value="DarkGreen" /> 
</Style> 
+0

你是什么意思的“它不工作”。你能向我们展示错误信息,异常情况或错误结果等吗? – 2010-07-02 10:52:30

回答

0

您正在设置“背景”属性,而不是“BaseColor”属性?

<Style TargetType="{x:Type local1:AreaDataPoint}"> 
    <Setter Property="BaseColor" Value="DarkGreen" /> 
</Style> 

请记住,你可能需要一个转换器把字符串DarkGreen并将其转换为一个Color instsance。

+0

我在xaml中出错了。属性名称是BaseColor。但它也行不通。 – rotor 2010-07-02 10:44:45

+0

正如我所说的,您可能需要一个转换器来取得“DarkGreen”的值并将其转换为一种颜色。测试它的一种方法是将DependencyProperty的类型更改为字符串,然后查看是否调用了setter。 – 2010-07-02 11:02:04

+0

XAML中的命名颜色和SolidColorBrushes会自动转换。 – 2010-07-02 13:38:46

0

你怎么确定它“不起作用”。从你的代码中的内容来看,一切都是正确的,所以你可能会在别处做某些事情,导致Style值丢失。您是否可以在代码或XAML中为BaseColor设置本地值?你有没有证实你使用BaseColor属性的地方实际上是正确拉取值?直接使用Color也不常见 - 大多数情况下(前景,背景,形状填充)都使用笔刷,所以我也会检查它。