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
類型的:爲此,你需要自定義IValueConverter
將其轉換成SolidColorBrush
:
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();
}
}
您在資源中定義的內容:
<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}}"/>
爲什麼就不能創建類型'System.Windows.Media.Color'的設置?只需點擊設置類型組合框中的瀏覽...,然後選擇PresentationCore - > System.Windows.Media - > Color。 – Clemens
嗯,不錯。但如何定義透明顏色? –
@PatrikPolakovic如果有任何答案解決你的問題,你可以標記它。 – loop