Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 绑定SolidColorBrush的颜色并使用转换器进行更改_Wpf_Mvvm - Fatal编程技术网

Wpf 绑定SolidColorBrush的颜色并使用转换器进行更改

Wpf 绑定SolidColorBrush的颜色并使用转换器进行更改,wpf,mvvm,Wpf,Mvvm,列表视图的itemtemplate中有一个边框,如下所示: <ListView.ItemTemplate> <DataTemplate> <Border > <Border.Background> <SolidColorBrush Color="{Binding

列表视图的itemtemplate中有一个边框,如下所示:

  <ListView.ItemTemplate>
                <DataTemplate>
                    <Border  >
                        <Border.Background>

                            <SolidColorBrush Color="{Binding Path=IsTrue, Converter={StaticResource ResourceKey=ColorConventer}}" Opacity="0.2">

                            </SolidColorBrush>
                        </Border.Background>
</Border>
<Border Background="{Binding Path=IsTrue, Converter={StaticResource ColorConventer}}" />
public object Convert(
    object value, Type targetType, object parameter, CultureInfo culture)
{
    if (!(value is bool))
    {
        return value;
    }

    return new SolidColorBrush
    {
        Color = (bool)value ? Colors.Red : Colors.White,
        Opacity = 0.2
    };
}
调用ColorConventer,但不会更改SolidColorBrush的颜色。
有人能帮上忙吗?原因是什么?

您不能将SolidColorBrush的
Color
属性绑定到另一个SolidColorBrush。更改转换器,使其返回颜色:

public object Convert(
    object value, Type targetType, object parameter, CultureInfo culture)
{
    if (value is bool)
    {
        return (bool)value ? Colors.Red : Colors.White;
    }

    return value;
}
使用原始转换器,您可以编写如下的后台绑定:

  <ListView.ItemTemplate>
                <DataTemplate>
                    <Border  >
                        <Border.Background>

                            <SolidColorBrush Color="{Binding Path=IsTrue, Converter={StaticResource ResourceKey=ColorConventer}}" Opacity="0.2">

                            </SolidColorBrush>
                        </Border.Background>
</Border>
<Border Background="{Binding Path=IsTrue, Converter={StaticResource ColorConventer}}" />
public object Convert(
    object value, Type targetType, object parameter, CultureInfo culture)
{
    if (!(value is bool))
    {
        return value;
    }

    return new SolidColorBrush
    {
        Color = (bool)value ? Colors.Red : Colors.White,
        Opacity = 0.2
    };
}

很好,你的解决方案解决了我的问题,非常感谢。