2014-10-20 3 views
1

Brush (속성과 같은 배경색 임) DependencyProperty 사용자 지정 컨트롤이 있습니다.DependencyProperty에서 "null"브러시 피하기

사용자는 표준 Visual Studio Color Property Bag을 사용하여 색상을 설정할 수 있습니다. 내가 원하는 것은 null 브러시 (금지 된 상자가있는 브러시)를 설정할 가능성을 배제하는 것입니다. 나는이 방법으로 CoerceValue 콜백을 사용하려고 ... 처음에만

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; 
} 

이 작동 :

MyBackgroundColorProperty = DependencyProperty.Register("MyBackgroundColor", typeof(Brush), typeof(MyObject), new FrameworkPropertyMetadata(Brushes.Black, null, CoerceCurrentColor)); 

CoerceCurrentColor이입니다.

"브러시 없음"을 선택하면 실제 색상이 투명으로 설정됩니다. 하지만 지금은 언제나 "잘못된 속성 값"메시지 상자 오류가 발생하는 색상을 변경하려고합니다. 왜? 그리고이 결과를 얻는 다른 방법이 있습니까?

답변

1

null 가능성을 처리하려면 IValueConverter를 사용하십시오.

+0

좋은 아이디어! 나는 곧 그것을 시도하고 내가 당신을 알려 드리겠습니다. – rPulvi