Wpf 绑定SolidColorBrush的颜色并使用转换器进行更改
列表视图的itemtemplate中有一个边框,如下所示:Wpf 绑定SolidColorBrush的颜色并使用转换器进行更改,wpf,mvvm,Wpf,Mvvm,列表视图的itemtemplate中有一个边框,如下所示: <ListView.ItemTemplate> <DataTemplate> <Border > <Border.Background> <SolidColorBrush Color="{Binding
<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
};
}
很好,你的解决方案解决了我的问题,非常感谢。