在我的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,但我仍然遇到同样的错误。
答案 0 :(得分:0)
解决了我自己的问题。如果有人碰到这个:我犯了一个粗心的错误。我的自定义类中的所有Color属性,定义为System.Drawing.Brush,它们应该是System.Window.Media.Brush。