使用转换器将颜色绑定到bool上不会被更新

问题描述 投票:0回答:1

我有一个WPF项目。

我想有一个边框的刷子取决于我的viewmodel的一个bool值,我写了一个绑定到一个bool属性,它被更新,并有一个特殊的转换器从bool到一些刷子。我写了一个绑定到一个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>

我的转换器是这样的

[ValueConversion(typeof(bool), typeof(Brush))]
public class BoolToGreenColorConverter : IValueConverter
{
    #region IValueConverter Members

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

这是它在运行程序中的样子。enter image description here

我还尝试了其他颜色,比如文本块背景。这也不行。我在哪里错过了什么?

c# .net wpf xaml binding
1个回答
2
投票

你的转换器应该返回 System.Windows.Media.Brushes.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.

© www.soinside.com 2019 - 2024. All rights reserved.