У меня есть Enum с именем "DoYouKnow", содержащий Yes
, No
и Unknown
.
У меня есть столбец в GridView, который в настоящее время отображает "Да", "Нет"или «Неизвестно» в каждой строке, основываясь на значении DoYouKnow, к которому я его прикрепил, используя DisplayMemberBinding
.
Вместо отображения я хотел бы, чтобы в этом столбце отображалась галочка, крестик или знак вопроса.
До сих пор самым близким, что я получил к этой работе, было рисование некоторых картинок и оплакивание того факта, что если бы мне не пришлось использовать WPF, я мог бы делать это в коде, не беспокоя всех вас.хорошие люди.
Есть идеи, что мне делать дальше?
РЕДАКТИРОВАТЬ: Основываясь на советах Рида, я дошел до этой стадии с моим XAML (большая часть деталей была вырвана, извиненияесли что-то очевидное отсутствует, не стесняйтесь спрашивать, потому что я знаю, что чего-то важного не хватает):
<UserControl.Resources>
<l:KnownImageConverter x:Key="imageConverter"/>
</UserControl.Resources>
<Grid>
<ListView>
<ListView.View>
<GridView>
<GridViewColumn Header="Known State" DisplayMemberBinding="{Binding Path=Known, Converter={StaticResource imageConverter}}" />
</GridView>
</ListView.View>
</ListView>
</Grid>
И это iValueConverter, который я собрал вместе:
<ValueConversion(GetType(Known), GetType(Image))>
Public Class KnownImageConverter
Implements IValueConverter
Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
Select Case CType(value, Known)
Case Known.Yes
Return My.Resources.Yes
Case Known.No
Return My.Resources.No
Case Known.Unknown
Return My.Resources.Unknown
End Select
Return New Image
End Function
Public Function ConvertBack(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack
If value Is My.Resources.Yes Then
Return Known.Yes
ElseIf value Is My.Resources.No Then
Return Known.No
ElseIf value Is My.Resources.Unknown Then
Return Known.Unknown
End If
Return Known.Unknown
End Function
End Class
Как я уже сказал в комментариях ниже, изображения, которые я используюg отображаются в ListView как «System.Drawing.Bitmap» вместо моих симпатичных маленьких картинок.