gpt4 book ai didi

c# - 如何根据绑定(bind)值更改 WPF 数据网格行的图像

转载 作者:行者123 更新时间:2023-11-30 13:33:05 25 4
gpt4 key购买 nike

我是 WPF 的初学者。

我有一个数据网格,用于显示具有如下列定义的消息。数据网格绑定(bind)到数据表

<my:DataGridTextColumn Binding="{Binding Module}" Header="Module" 
Width="75" IsReadOnly="True"></my:DataGridTextColumn>
<my:DataGridTextColumn Binding="{Binding Record ID}" Header="RecordID"
Width="75" IsReadOnly="True"></my:DataGridTextColumn>
<my:DataGridTextColumn Binding="{Binding ItemName}"
Header="Item/Platform/Country Name" Width="175" IsReadOnly="True">
</my:DataGridTextColumn>
<my:DataGridTextColumn Binding="{Binding DateReceived}"
Header="DateReceived" Width="150" IsReadOnly="True">
</my:DataGridTextColumn>
<my:DataGridTextColumn Binding="{Binding Comments}" Header="Comments"
Width="300" IsReadOnly="True"></my:DataGridTextColumn>

现在我需要添加一个标题为 "Status"的库。和内容作为图像。我有约束力数据表的“IsRead”列到此列,如果 IsRead 值为 False,我需要显示图像 unread.png,如果 IsRead 值为 True,我需要显示图像 read.png

我该怎么做?

最佳答案

您可以在包含绑定(bind)属性的类中创建一个 StatusImage 属性:

public string StatusImage {
get
{
if (IsRead)
return "read.png";
return "unread.png";
}
}

然后将它绑定(bind)到图像例如:

<Image Source="{Binding StatusImage}"></Image>

或者在您没有类的情况下。您可以在数据触发器之间进行选择:

<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Name="IsReadImage" Source="read.png"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsRead}" Value="False">
<Setter TargetName="IsReadImage" Property="Source" Value="unread.png"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

或者您可以使用值转换器:

类:

public class IsReadImageConverter : IValueConverter  
{
public Image ReadImage { get; set; }
public Image UnreadImage { get; set; }

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (!(value is bool))
{
return null;
}
bool b = (bool)value;
if (b)
{
return this.ReadImage
}
else
{
return this.UnreadImage
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}

窗口资源:

<local:IsReadImageConverter ReadImage="Read.png" UnreadImage="Unread.png" x:Key="BoolImageConverter"/>

那么你的绑定(bind)将是:

ImageSource={Binding Path=IsRead,Converter={StaticResource BoolImageConverter}}"

应该一切正常。

关于c# - 如何根据绑定(bind)值更改 WPF 数据网格行的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9902540/

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