2012-09-10 41 views
1

你好,我已經在我的下面一行IMultiValueConverterWPF VB.NET IMultiValueConverter和「轉化類型從‘NamedObject’鍵入雙師型」無效」

Public Function Convert(ByVal values() As Object, _ 
        ByVal targetType As System.Type, _ 
        ByVal parameter As Object, _ 
        ByVal culture As System.Globalization.CultureInfo) As Object Implements IMultiValueConverter.Convert 
    If Not IsDBNull(values(0).ToString) And AndAlso Not IsDBNull(values(1).ToString) Then 
     If CDbl((values(1))) > 0 Then 

      Select Case CInt(Fix(values(0))) 
       Case 1 
        Return New LinearGradientBrush(Color.FromArgb(My.Settings.r1rowcolor.A, My.Settings.r1rowcolor.R, My.Settings.r1rowcolor.G, My.Settings.r1rowcolor.B), Color.FromArgb(My.Settings.r1rowendcolor.A, My.Settings.r1rowendcolor.R, My.Settings.r1rowendcolor.G, My.Settings.r1rowendcolor.B), My.Settings.r1angle) 
       Case 2 
        Return New LinearGradientBrush(Color.FromArgb(My.Settings.r2rowcolor.A, My.Settings.r2rowcolor.R, My.Settings.r2rowcolor.G, My.Settings.r2rowcolor.B), Color.FromArgb(My.Settings.r2rowendcolor.A, My.Settings.r2rowendcolor.R, My.Settings.r2rowendcolor.G, My.Settings.r2rowendcolor.B), My.Settings.r2angle) 
       Case 3 
        Return New LinearGradientBrush(Color.FromArgb(My.Settings.r3rowcolor.A, My.Settings.r3rowcolor.R, My.Settings.r3rowcolor.G, My.Settings.r3rowcolor.B), Color.FromArgb(My.Settings.r3rowendcolor.A, My.Settings.r3rowendcolor.R, My.Settings.r3rowendcolor.G, My.Settings.r3rowendcolor.B), My.Settings.r3angle) 
       Case Is > 3 
        Return New LinearGradientBrush(Color.FromArgb(My.Settings.rm3rowcolor.A, My.Settings.rm3rowcolor.R, My.Settings.rm3rowcolor.G, My.Settings.rm3rowcolor.B), Color.FromArgb(My.Settings.rm3rowendcolor.A, My.Settings.rm3rowendcolor.R, My.Settings.rm3rowendcolor.G, My.Settings.rm3rowendcolor.B), My.Settings.r4angle) 
      End Select 

     ElseIf CDbl((values(1))) < 0 Then 
      Return New LinearGradientBrush(Color.FromArgb(My.Settings.minpricesprice.A, My.Settings.minpricesprice.R, My.Settings.minpricesprice.G, My.Settings.minpricesprice.B), Color.FromArgb(My.Settings.minpricesprice.A, My.Settings.minpricesprice.R, My.Settings.minpricesprice.G, My.Settings.rm3rowendcolor.B), My.Settings.minpricespriceangle) 
     End If 
    End If 
End Function 

以下功能我得到一個異常「轉換從類型「NamedObject」鍵入雙師型」無效」

If CDbl((values(1))) > 0 Then 

所以我不知道什麼可能導致此異常,難道是無法檢查DBNULLS? 請注意,轉換器沒有多重約束的工作

或者它可以是,我傳遞2值一個是整數,一個是雙?

回答

2

NewItemPlaceholderCollectionViewNamedObject,所以也許ItemPlaceholder最終被傳遞到您的轉換器。

+0

聽起來也是合理的,它給出以下類型的參數'數'是'MS.Internal.NamedObject',它不是數字。 – user1570048

+0

但如果我添加'MsgBox(values(0).ToString)' 'MsgBox(values(1).ToString)''我可以看到它們是正確的值 – user1570048

+0

@ user1570048:'ToString'說沒有關於基礎類型所有對象都可能包含一些臨時數據,並通過「ToString」顯示它。 –

相關問題