2014-10-20 34 views
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; 
} 

這工作......僅在第一次。

如果我選擇「無刷」,則真實顏色設置爲「透明」。但現在每次嘗試更改顏色時,都會收到「無效的屬性值」消息框錯誤。爲什麼?而且,還有其他方法可以實現這一結果嗎?

回答

1

使用IValueConverter來處理null的可能性。

+0

不錯的主意!我很快就會嘗試,我會讓你知道的 – rPulvi 2014-10-20 13:35:07

相關問題