1
我有一個DependencyProperty
類型爲Brush
(屬於背景色屬性)的自定義控件。在DependencyProperty中避免使用「空白」畫筆
用戶可以使用標準的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;
}
這工作......僅在第一次。
如果我選擇「無刷」,則真實顏色設置爲「透明」。但現在每次嘗試更改顏色時,都會收到「無效的屬性值」消息框錯誤。爲什麼?而且,還有其他方法可以實現這一結果嗎?
不錯的主意!我很快就會嘗試,我會讓你知道的 – rPulvi 2014-10-20 13:35:07