2010-10-28 52 views
1

我:WPF DataGrid的圖標和布爾值

public class Person 
{ 
    String name { get; set; } 
    String address { get; set; } 
    bool isMarried { get; set; } 
} 

我的DataGrid中獲取與人的名單填充。

我想有在當isMarriedtrue圖標2.JPGisMarriedfalse顯示顯示圖標1.JPG自定義列。

如何在WPF中執行此操作?有任何想法嗎 ?

我知道該怎麼做一個自定義列,但我不知道如何與圖標1.JPG副教授isMarried兩種狀態圖標2.JPG

回答

6

你可以在你的自定義列有DataTrigger做到這一點:

<DataGridTemplateColumn Header="Married"> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
     <Image x:Name="IMG" Source="married_image" /> 
     <DataTemplate.Triggers> 
      <DataTrigger Binding="{Binding Path=isMarried}" Value="False"> 
       <Setter Property="Source" Value="not_married_image" TargetName="IMG"/> 
      </DataTrigger> 
     </DataTemplate.Triggers> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 
1

您可以使用IValueConveter從布爾值轉換爲Uri(Uri是您需要的圖像源)。

public class MarriedConverter : IValueConverter 
{ 
    public Object Convert(Object value, Type targetType, Object parameter, CultureInfo culture) 
    { 
     if ((value == null) || !(value is bool)) 
      return null; 

     bool isMarried = (bool)value; 

     if (isMarried) 
      return new Uri(#1); 
     else 
      return new Uri(#2); 
    } 

    public Object ConvertBack(Object value, Type targetType, Object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
}