我有我的客户数据的datagrid。我的客户实体收集了一系列笔记。Datagrid DataGridTemplateColumn基于导航支柱
我需要一种基于笔记状态在列中显示图像的方法,如果我的笔记中有任何笔记的状态为“警告”,则显示警告图像,否则显示正常状态图像。
这是可行的吗?
我有我的客户数据的datagrid。我的客户实体收集了一系列笔记。Datagrid DataGridTemplateColumn基于导航支柱
我需要一种基于笔记状态在列中显示图像的方法,如果我的笔记中有任何笔记的状态为“警告”,则显示警告图像,否则显示正常状态图像。
这是可行的吗?
我添加了一个只读[NotMapped]属性到我的客户实体(正在使用实体框架4),该返回的布尔值,然后结合内部DataGridTemplateColumn图像到这一点,并使用值转换器设置的源:
实体
[NotMapped]
public bool ShowWarning
{
get
{
if (this.AuditableNotes != null && this.AuditableNotes.Count(an => an.Warning) > 0)
{
return true;
}
else
{
return false;
}
}
}
XAML
<DataGridTemplateColumn
Header="Status">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image x:Name="MyImage" Source="{Binding ShowWarning, Converter={StaticResource notesStatusConverter}}" Width="25" Height="20"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
ValueConverter
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";
}
}
是的,有多种方法可以实现这一点。
如果您有一个客户ViewModel
,那么只需公开一个属性,告诉您特定客户的笔记集合中是否有警告状态,然后使用它来确定是否显示该图像。
另一个选择是使用一个ValueConverter
,它接受您的笔记集合,然后确定是否显示图像。
我相信还有其他的方法,但这些都是我脑海中浮现出来的。
我可以将一组注释绑定到DataGridTemplateColumn吗?我尝试过,但传递给我的ValueConverter的值始终为空。 – CheGuevarasBeret 2013-02-25 20:24:13
我刚刚检查过,是的,你可以绑定到一个集合,并将它传递给一个ValueConverter。我不知道为什么你有问题。如果你继续遇到问题,那么就在SO上发起一个新的问题,因为这不是解决问题的适当位置。另外,请确保对有帮助的答案进行upvote或标记为答案。 – 2013-02-26 16:02:53