WPF DataGrid图标和布尔值

时间:2010-10-28 16:24:59

标签: wpf image datagrid

我有:

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

我的数据网格中填充了一个人员列表。

我希望有一个自定义列,当isMarriedtrue icon-2.jpg 时会显示 icon-1.jpg isMarriedfalse时显示。

如何在WPF中执行此操作?有任何想法吗 ?

我知道如何制作自定义列,但我不知道如何将isMarried的两种状态与 icon-1.jpg icon-2.jpg相关联即可。

2 个答案:

答案 0 :(得分:7)

您可以使用自定义列中的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 :(得分:2)

您可以使用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();
    }
}