Значок WPF DataGrid и логическое значение - PullRequest
2 голосов
/ 28 октября 2010

у меня есть:

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

Моя таблица данных заполняется списком лиц.

Я хочу иметь пользовательский столбец, в котором icon-1.jpg отображается, когда isMarried равен true, а icon-2.jpg отображается, когда isMarried false

Как мне это сделать в WPF? Есть идеи ?

Я знаю, как сделать пользовательский столбец, но я не знаю, как связать два состояния isMarried с icon-1.jpg и icon-2.jpg,

Ответы [ 2 ]

7 голосов
/ 28 октября 2010

Вы можете сделать это с помощью 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>
2 голосов
/ 28 октября 2010

Вы можете использовать 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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...