WPF:设计器不会设置自定义属性

时间:2017-10-01 11:11:45

标签: wpf xaml

在我的WPF appp中,我通过继承TextBox创建了一个自定义控件。然后我添加了一个名为BorderWhenRequired的DependencyProperty(TextBox表示必填字段时使用的边框),如下所示:

public class TextBoxEx : TextBox
{
    public static readonly DependencyProperty BorderWhenRequiredProperty = DependencyProperty.Register(
        "BorderWhenRequired", typeof(Brush), typeof(TextBoxEx),
        new FrameworkPropertyMetadata(default(Brush), FrameworkPropertyMetadataOptions.AffectsRender)
    );

    public Brush BorderWhenRequired
    {
        get { return (Brush)GetValue(BorderWhenRequiredProperty); }
        set { SetValue(BorderWhenRequiredProperty, value); }
    }
}

然后我创建了一个资源,用于保存边框的画笔值,以及控件的样式:

<SolidColorBrush x:Key="RequiredControlBorderBrush">Purple</SolidColorBrush>

<Style TargetType="{x:Type implementations:TextBoxEx}">
    <Setter Property="BorderWhenRequired" Value="{StaticResource RequiredControlBorderBrush}" />
</Style>

但设计师正在向我展示:

ArgumentException: '#FF800080' is not a valid value for the 'MyNs.Common.Controls.Implementations.TextBoxEx.BorderWhenRequired' property on a Setter.

我尝试将资源RequiredControlBorderBrush定义为Brush,Color和SolidColorBrush,但我仍然遇到同样的错误。

1 个答案:

答案 0 :(得分:0)

解决了我自己的问题。如果有人碰到这个:我犯了一个粗心的错误。我的自定义类中的所有Color属性,定义为System.Drawing.Brush,它们应该是System.Window.Media.Brush。