我在自定义控件类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>
答案 0 :(得分:0)
您正在设置“背景”属性,而不是“BaseColor”属性?
<Style TargetType="{x:Type local1:AreaDataPoint}">
<Setter Property="BaseColor" Value="DarkGreen" />
</Style>
请记住,您可能需要转换器来获取字符串DarkGreen
并将其转换为Color
个实例。
答案 1 :(得分:0)
你如何确定它“不起作用”。从你的代码中的内容来看,一切都是正确的,所以你可能会在其他地方做一些导致Style值迷失的事情。您是否可以在代码或XAML中的某处为BaseColor设置本地值?您是否已验证使用BaseColor属性的位置实际上是否正确地提取了值?直接使用颜色也不常见 - 大多数情况(前景,背景,形状填充)都使用画笔,所以我也会检查它。