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";
    }

}