C# 使用转换器将颜色绑定到bool不会得到更新
我有一个WPF项目 我想根据viewmodel的布尔值绘制一个边界笔刷。我编写了一个bool属性的绑定,它会被更新,并且有一个从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
<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;
}
边框笔刷
只能设置为笔刷
,不能设置为颜色