列表视图的itemtemplate中有一个边框,如下所示:
<ListView.ItemTemplate>
<DataTemplate>
<Border >
<Border.Background>
<SolidColorBrush Color="{Binding Path=IsTrue, Converter={StaticResource ResourceKey=ColorConventer}}" Opacity="0.2">
</SolidColorBrush>
</Border.Background>
</Border>
bool to color converter:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
try
{
if (value != null)
{
switch ((bool)value)
{
case true:
//return System.Windows.Media.Brushes.Red;
return new SolidColorBrush(Colors.Red);
case false:
return new SolidColorBrush(Colors.White);
}
}
}
catch { }
return value;
}
调用ColorConventer但不更改SolidColorBrush的颜色。 任何人都可以帮忙,原因是什么?
答案 0 :(得分:2)
您无法将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;
}
使用原始转换器,您可以编写背景绑定,如下所示:
<Border Background="{Binding Path=IsTrue, Converter={StaticResource ColorConventer}}" />
但是从转换器返回的SolidColorBrush必须设置其不透明度,例如像这样:
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
};
}