c# - 如何根据绑定值更改列表视图项的图像 - UWP
问题描述
我有一个使用可观察集合绑定值的列表视图。listview 包含一个带有图像和文本的按钮。根据文本值我想改变按钮的背景颜色,还需要改变图像的来源。我怎样才能做到这一点?
<ListView ItemsSource="{x:Bind ShopArray}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="local:CurrentShopList2">
<Button Background="Green" >
<Grid>
<TextBlock Foreground="Black" FontWeight="Bold" Text="{x:Bind IsBooksAvailable}"/>
<Image Source="/Assets/booksAvailable.png" Stretch="None" />
</Grid>
</Button>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
如果值为IsBooksAvailable="Yes"
,我想将按钮的背景颜色更改为绿色,将图像源更改为 /Assets/booksAvailable.png
。如果IsBooksAvailable="No"
我想将按钮的背景颜色更改为红色并隐藏图像按钮。
解决方案
对于按钮,您需要一个 IValueConverter。它应该如下所示:
public class BoolToColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if ((bool)value)
return new SolidColorBrush(Color.FromArgb(255, 0, 255, 0));
else
return new SolidColorBrush(Color.FromArgb(255, 255, 0, 0));
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
使用此转换器将按钮的颜色属性绑定到 IsBooksAvailable。
对于图像,您可以执行相同的操作,将 Source 属性绑定到文本字段,并在必要时使用转换器将文本调整为正确的路径。但我更喜欢将图像存储在 ObservableCollection 的 byte[] 属性中,并使用 ByteArrayToImageConverter。
推荐阅读
- microsoft-teams - 出勤报告缺少选定的参与者
- iis - IIS URL 重写 - 从客户端检测到潜在危险的 Request.Path 值 (:)
- python - [已解决]:使用 Tkinter 中的相应按钮为标签提供 ID
- google-apps-script - 动态填充谷歌应用程序脚本中的文件
- rust - 将 JavaScript 中的标记联合与 wasm-bindgen 一起使用
- javascript - Import.meta.env 在生产构建 vitejs 上未定义
- c# - HLSL“优化”使用的变量
- django - 我从衣领上克隆了它,django admin 是这样的。这是为什么?
- c# - 使用c#将datagridview数据导出到csv文件
- macos - Mac M1 `cp`ing 二进制文件超过另一个导致崩溃