不能改变自己的风格

时间:2010-07-02 10:08:20

标签: c# wpf styles dependency-properties

我在自定义控件类DataPoint中创建依赖项属性:

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
}

然后我创建了继承DataPoint的其他自定义控件AreaDataPoint:

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

    // Other class stuff
}

在xaml中我试图为BaseColor属性赋值,但它不起作用

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

2 个答案:

答案 0 :(得分:0)

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

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

请记住,您可能需要转换器来获取字符串DarkGreen并将其转换为Color个实例。

答案 1 :(得分:0)

你如何确定它“不起作用”。从你的代码中的内容来看,一切都是正确的,所以你可能会在其他地方做一些导致Style值迷失的事情。您是否可以在代码或XAML中的某处为BaseColor设置本地值?您是否已验证使用BaseColor属性的位置实际上是否正确地提取了值?直接使用颜色也不常见 - 大多数情况(前景,背景,形状填充)都使用画笔,所以我也会检查它。