2013-02-25 58 views
0

我有我的客户数据的datagrid。我的客户实体收集了一系列笔记。Datagrid DataGridTemplateColumn基于导航支柱

我需要一种基于笔记状态在列中显示图像的方法,如果我的笔记中有任何笔记的状态为“警告”,则显示警告图像,否则显示正常状态图像。

这是可行的吗?

回答

0

我添加了一个只读[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"; 
    } 

} 
0

是的,有多种方法可以实现这一点。

如果您有一个客户ViewModel,那么只需公开一个属性,告诉您特定客户的笔记集合中是否有警告状态,然后使用它来确定是否显示该图像。

另一个选择是使用一个ValueConverter,它接受您的笔记集合,然后确定是否显示图像。

我相信还有其他的方法,但这些都是我脑海中浮现出来的。

+0

我可以将一组注释绑定到DataGridTemplateColumn吗?我尝试过,但传递给我的ValueConverter的值始终为空。 – CheGuevarasBeret 2013-02-25 20:24:13

+0

我刚刚检查过,是的,你可以绑定到一个集合,并将它传递给一个ValueConverter。我不知道为什么你有问题。如果你继续遇到问题,那么就在SO上发起一个新的问题,因为这不是解决问题的适当位置。另外,请确保对有帮助的答案进行upvote或标记为答案。 – 2013-02-26 16:02:53