2013-02-25 97 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