C# 使用转换器将颜色绑定到bool不会得到更新

C# 使用转换器将颜色绑定到bool不会得到更新,c#,.net,wpf,xaml,binding,C#,.net,Wpf,Xaml,Binding,我有一个WPF项目 我想根据viewmodel的布尔值绘制一个边界笔刷。我编写了一个bool属性的绑定,它会被更新,并且有一个从bool到一些笔刷的特殊转换器。一切正常,但颜色不显示 我制作了一个示例应用程序来说明这个问题: <StackPanel> <Border BorderThickness="3" BorderBrush="{Binding ElementName=OnOffSwitch, Path=IsChecked, Converter={StaticR

我有一个WPF项目

我想根据viewmodel的布尔值绘制一个边界笔刷。我编写了一个bool属性的绑定,它会被更新,并且有一个从bool到一些笔刷的特殊转换器。一切正常,但颜色不显示

我制作了一个示例应用程序来说明这个问题:

  <StackPanel>
    <Border BorderThickness="3" BorderBrush="{Binding ElementName=OnOffSwitch, Path=IsChecked, Converter={StaticResource BoolToGreen}, Mode=OneWay}">
        <TextBlock >
            <Run Text="The option is " />
            <Run Text="{Binding ElementName=OnOffSwitch, Path=IsChecked, Mode=OneWay}" />
            <Run Text=" Color should be " />
            <Run Text="{Binding  ElementName=OnOffSwitch, Path=IsChecked, Mode=OneWay, Converter={StaticResource BoolToGreen}}" />
        </TextBlock>
    </Border>
    <CheckBox x:Name="OnOffSwitch" Content="Green" IsChecked="{Binding OnOff}" />
</StackPanel>
这是运行应用程序时的外观:

我还尝试了其他颜色,比如文本块背景。它也不起作用。
我在哪里漏掉了什么?

您的转换器应该返回
System.Windows.Media.brush.Green
而不是
Colors.Green

public object Convert(object value, Type targetType, object parameter,
    System.Globalization.CultureInfo culture)
{
    return (bool)value ? System.Windows.Media.Brushes.Green : System.Windows.Media.Brushes.Red;
}

BorderBrush
只能设置为
Brush
而不能设置为
Color
转换器应返回
System.Windows.Media.Brush.Green
而不是
Colors.Green

public object Convert(object value, Type targetType, object parameter,
    System.Globalization.CultureInfo culture)
{
    return (bool)value ? System.Windows.Media.Brushes.Green : System.Windows.Media.Brushes.Red;
}
边框笔刷
只能设置为
笔刷
,不能设置为
颜色