2010-09-28 73 views
1

我有一個名爲「DoYouKnow」的枚舉,其中包含Yes,NoUnknown如何根據DisplayMemberBinding使XAML GridView顯示多個圖像之一?

我在GridView中有一列,根據我使用DisplayMemberBinding附加的DoYouKnow值,它在當前每行中顯示「是」,「否」或「未知」。

而不是顯示我想讓此列顯示勾號,交叉或問號。

到目前爲止,我得到這個工作最接近的是繪製一些圖片,並感嘆如果我不需要使用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 

正如我在下面的評論中說,我使用的圖片都在ListView中顯示爲「系統.Drawing.Bitmap「而不是我漂亮的小圖片。

回答

1

您可以製作一個IValueConverter將您的枚舉轉換爲相應的圖像。然後,您可以將圖像源與價值轉換器直接綁定到您的價值。

+0

iValueConverter工作,但GridViewColumn顯示「System.Drawing.Bitmap」爲每個條目,而不是實際的圖像。 – Frosty840 2010-09-28 15:56:37

+0

@ Frosty840:沒有看到你的XAML,很難知道完整的問題 - 但是......你顯然正在製作一個'System.Drawing.Bitmap',它是一個GDI位圖,而不是WPF圖像。如果你製作一個WPF圖像,它可能會正常工作。嘗試製作一個BitmapImage,而不是:http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmapimage.aspx – 2010-09-28 16:01:23

+0

裏德:感謝您的幫助,我編輯了我的問題,使事情清晰。 – Frosty840 2010-09-28 16:20:02