Wpf 基于导航属性的Datagrid DataGridTemplateColumn
我有一个用于我的客户数据的数据网格。我的客户实体公开了一组注释 我需要一种基于注释状态在列中显示图像的方法,如果我的任何注释的状态为“警告”,则显示警告图像,否则显示正常状态图像Wpf 基于导航属性的Datagrid DataGridTemplateColumn,wpf,datagrid,datagridtemplatecolumn,Wpf,Datagrid,Datagridtemplatecolumn,我有一个用于我的客户数据的数据网格。我的客户实体公开了一组注释 我需要一种基于注释状态在列中显示图像的方法,如果我的任何注释的状态为“警告”,则显示警告图像,否则显示正常状态图像 这可以吗 是的,有多种方法可以做到这一点 如果您有一个客户ViewModel,则只需公开一个属性,告诉您特定客户在其notes集合中是否具有警告状态,然后使用该属性确定是否显示图像 另一种选择是使用ValueConverter,它接收notes集合,然后确定是否显示图像 我确信还有其他方法,但这些都是我脑海中浮现的方法
这可以吗 是的,有多种方法可以做到这一点 如果您有一个客户
ViewModel
,则只需公开一个属性,告诉您特定客户在其notes集合中是否具有警告状态,然后使用该属性确定是否显示图像
另一种选择是使用ValueConverter
,它接收notes集合,然后确定是否显示图像
我确信还有其他方法,但这些都是我脑海中浮现的方法。我向我的客户实体(使用实体框架4)添加了一个只读[NotMapping]属性,该属性返回一个布尔值,然后将DataGridTemplateColumn中的一个图像绑定到此值,并使用值转换器设置源: 实体
[NotMapped]
public bool ShowWarning
{
get
{
if (this.AuditableNotes != null && this.AuditableNotes.Count(an => an.Warning) > 0)
{
return true;
}
else
{
return false;
}
}
}
XAML
我可以将注释集合绑定到DataGridTemplateColumn吗?我已经尝试过了,但传入我的ValueConverter的值总是空的。我刚刚检查过,是的,您可以绑定到集合并将其传递给ValueConverter。我不知道你为什么会有问题。如果你在做这件事时仍然有问题,那么就开始一个新的问题,因为这不是解决问题的合适地方。另外,请确保对有帮助的答案进行投票或标记为答案。
<DataGridTemplateColumn
Header="Status">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image x:Name="MyImage" Source="{Binding ShowWarning, Converter={StaticResource notesStatusConverter}}" Width="25" Height="20"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null && (bool)value == true)
{
return "/Assets/Images/symbol_error.png";
}
else
{
return "/Assets/Images/symbol_information.png";
}
}