我有:
public class Person
{
String name { get; set; }
String address { get; set; }
bool isMarried { get; set; }
}
我的数据网格中填充了一个人员列表。
我希望有一个自定义列,当isMarried
为true
且 icon-2.jpg 时会显示 icon-1.jpg isMarried
为false
时显示。
如何在WPF中执行此操作?有任何想法吗 ?
我知道如何制作自定义列,但我不知道如何将isMarried
的两种状态与 icon-1.jpg 和 icon-2.jpg相关联即可。
答案 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();
}
}