Вы можете создать свойство StatusImage в классе, который содержит ваши свойства привязки:
public string StatusImage {
get
{
if (IsRead)
return "read.png";
return "unread.png";
}
}
А затем привязать его к изображению, например:
<Image Source="{Binding StatusImage}"></Image>
Или как в вашем случае, что у вас нет класса. Вы можете выбрать один из источников данных:
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Name="IsReadImage" Source="read.png"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsRead}" Value="False">
<Setter TargetName="IsReadImage" Property="Source" Value="unread.png"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Или вы можете использовать преобразователь значения:
Класс:
public class IsReadImageConverter : IValueConverter
{
public Image ReadImage { get; set; }
public Image UnreadImage { get; set; }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (!(value is bool))
{
return null;
}
bool b = (bool)value;
if (b)
{
return this.ReadImage
}
else
{
return this.UnreadImage
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
Ресурсы окна:
<local:IsReadImageConverter ReadImage="Read.png" UnreadImage="Unread.png" x:Key="BoolImageConverter"/>
Тогда ваша привязка будет:
ImageSource={Binding Path=IsRead,Converter={StaticResource BoolImageConverter}}"
Должно все работать.