gpt4 book ai didi

wpf - 绑定(bind) SolidColorBrush 的颜色并使用转换器更改它

转载 作者:行者123 更新时间:2023-12-03 10:26:09 24 4
gpt4 key购买 nike

ListView 的 itemtemplate 内有一个边框,如下所示:

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

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

</SolidColorBrush>
</Border.Background>
</Border>


bool 到颜色转换器:
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 的颜色没有改变。
任何人都可以帮忙,这是什么原因?

最佳答案

您无法绑定(bind) Color SolidColorBrush 的属性到另一个 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;
}

使用您的原始转换器,您可以像这样编写背景绑定(bind):
<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
};
}

关于wpf - 绑定(bind) SolidColorBrush 的颜色并使用转换器更改它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49081676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com