如何在UserControl依赖属性上设置样式?

时间:2013-12-17 18:35:25

标签: wpf xaml user-controls

我创建了一个UserControl,其中包含一个名为HighlightedBorderBrush的依赖项属性。 我按如下方式注册了依赖属性:

    public static readonly DependencyProperty HighlightedBorderBrushProperty =
    DependencyProperty.Register("Highlighted_BorderBrush", typeof(Brush),
                                typeof(MyUserControl),
                                new FrameworkPropertyMetadata(Brushes.Black));

    public Brush HighlightedBorderBrush
    {
        get { return (Brush)GetValue(HighlightedBorderBrushProperty); }
        set {SetValue(HighlightedBorderBrushProperty, value); }
    }

在我使用UserControl的代码中,我可以直接在XAML中设置HighlightedBorderBrush属性,如下所示:

    <local:MyUserControl HighlightedBorderBrush="Red" />

这很好用。但是,当我尝试使用样式时,我收到一个错误:“调用目标引发了异常。”

以下是我尝试使用样式的代码:

    <!-- Define a style for the user control -->
    <Window.Resources>
        <Style x:Key="UserControlStyle" TargetType="{x:Type local:MyUserControl}">
            <Setter Property="HighlightedBorderBrush" Value="Red"/>
        </Style
    </Window.Resources>

    .
    .
    .

    <!-- Use a Style to set the HighlightedBorderBrush property -->
    <local:MyUserControl Style="{StaticResource UserControlStyle}" />

我猜我错过了一些明显但却无法解决的问题。救命啊!

1 个答案:

答案 0 :(得分:0)

如前所述,DependencyProperty注册中的属性名称不正确。

DP注册中的媒体资源名称应为HighlightedBorderBrush,而不是Highlighted_BorderBrush