我的自定义控件的DependencyProperty
类型为Brush
(背景颜色属性)。
用户可以使用标准的Visual Studio Color Property Bag设置颜色。
我想要的是排除设置空刷(带有禁止框的那个)的可能性。
我尝试以这种方式使用CoerceValue
回调:
MyBackgroundColorProperty = DependencyProperty.Register("MyBackgroundColor", typeof(Brush), typeof(MyObject), new FrameworkPropertyMetadata(Brushes.Black, null, CoerceCurrentColor));
其中CoerceCurrentColor
是:
private static object CoerceCurrentColor(DependencyObject d, object baseValue)
{
if (baseValue == null)//Null brush can't be permitted
return new SolidColorBrush(Colors.Transparent);
return baseValue as Brush;
}
这有效......仅限第一次。
如果我选择" No Brush",则将真实颜色设置为透明。但是现在每当我尝试改变颜色时,我都会得到一个"无效的属性值"消息框错误。为什么?而且,有没有其他方法可以实现这一结果?
答案 0 :(得分:1)
使用IValueConverter处理null可能性。