2013-07-24 1 views
1

색 바인딩 설정에서 정의 된 Bkg (System.Drawing.Color)을 XAML의 스타일로 정의 하시겠습니까?XAML의 스타일을 사용하여 드로잉. 색 지정

의 xmlns : 소품 = "CLR-네임 스페이스 : App.Properties"

<Style TargetType="{x:Type StackPanel}" x:Key="_itemStyle"> 
    <Setter Property="Background" Value="{Binding Path=Bkg, Source={x:Static props:Settings.Default}}"/> 

배경 속성이 어떻게 든 변환해야하므로 입력 System.Windows.Media.Color이다?

+0

왜 단순히'System.Windows.Media.Color' 유형의 설정을 만들? 설정 유형 콤보 상자에서'찾아보기 ... '를 클릭하고 PresentationCore -> System.Windows.Media -> Color를 선택하십시오. – Clemens

+0

흠, 좋은. 그러나 투명 색상을 정의하는 방법은 무엇입니까? –

+0

@PatrikPolakovic 어떤 문제라도 문제를 해결하면 바로 표시 할 수 있습니다. – loop

답변

4

Panel.Background 속성이 System.Windows.Media.Brush 유형이 아니고 System.Windows.Media.Color이 아니므로 SolidColorBrush으로 변환해야합니다. 당신은 모두의 시나리오를 찾을 수 아래 :

설정은 System.Windows.Media.Color 유형

<Setter Property="Background"> 
    <Setter.Value> 
     <SolidColorBrush Color="{Binding Source={x:Static props:Settings.Default}, Path=Bkg}"/> 
    </Setter.Value> 
</Setter> 

설정이 System.Drawing.Color 유형이다이다 :이 당신은 SolidColorBrush로 변환하는 사용자 정의 IValueConverter 필요합니다

public class ColorToBrushConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     var dc = (System.Drawing.Color)value; 
     return new SolidColorBrush(new Color { A = dc.A, R = dc.R, G = dc.G, B = dc.B }); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 
리소스에 정의한

:

(210)
<Window.Resources> 
    <local:ColorToBrushConverter x:Key="ColorToBrushConverter"/> 
</Window.Resources> 

당신은 다음과 같이 사용할 수 있습니다 :

<Setter Property="Background" Value="{Binding Source={x:Static props:Settings.Default}, Path=Bkg, Converter={StaticResource ColorToBrushConverter}}"/> 
+0

고맙습니다. System.Windows.Media.Color 변형을 사용했습니다. –

0

백그라운드 속성이 칫 솔형이므로 그 값을 설정하거나 일부 솔리드 브러시 typw 속성으로 만 얻을 수 있습니다. 그래서 당신이 할 수있는 것은 이것 대신에 솔리드 브러시 타입의 속성을 당신의 설정 클래스에 넣는 것입니다. 이제 모든 일이 잘 작동 ..

static SolidColorBrush brush = new SolidColorBrush(Colors.Red); 

    public static SolidColorBrush colorBrush 
    { 
     get 
     { 
      return brush; 
     } 
    } 

당신은 당신이 당신을하는 데 도움이 ..hope 당신이

this link을 따를 수 있음을 ..for 값 변환기를 사용하는 것을해야 할 해달라고합니다.

0

단순히 유형 System.Windows.Media.SolidColorBrush의 설정을 만들 수 있습니다. >System.Windows.Media - ->SolidColorBrush 새로운 설정의 유형 콤보 상자에서

선택 Browse... 다음 PresentationCore을 선택합니다. 이미 그랬던 것처럼

이제 직접 해당 설정을 사용할 수 있습니다 :

<Setter Property="Background" 
     Value="{Binding Path=Bkg, Source={x:Static props:Settings.Default}}"/>