如何将SystemColors转换为Brush?

时间:2014-12-12 11:56:57

标签: wpf wpf-controls

我有一个转换器返回一个Brush来设置我视图中控件的背景。但是,当我返回SystemColors.XXX它不起作用,但是当我使用Brush然后它工作,所以我认为我需要将SystemColors转换为Brush。

我该怎么办?因为我试过这个:

return (Brush)System.Windows.SystemColors.HighlightTextBrush;

在控件的资源中我设置了这个:

<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="Transparent"/>
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/>
                <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}" Color="Black"/>

我正在使用透明,因为行的背景我将通过多值转换器设置它们。

非常感谢。

1 个答案:

答案 0 :(得分:1)

您需要创建自己的转换器

public class ColorToSolidColorBrushValueConverter : IValueConverter {

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            return new SolidColorBrush((Color)value);
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            throw new NotImplementedException();
        }
    }

在资源部分声明它以使用它。

<local:ColorToSolidColorBrushValueConverter  x:Key="ColorToSolidColorBrushValueConverter"/>

并将其作为静态资源用于绑定。

Fill="{Binding Path=xyz,Converter={StaticResource ColorToSolidColorBrush_ValueConverter}}"