新的不能在MustInherit WPF VB.NET的类中使用

时间:2013-04-12 20:35:10

标签: wpf vb.net xaml

我在vb.net中有以下代码。我正在使用WPF,在XAML中,我在Image上有一个转换器。基本上,基于状态级别的图像应显示特定的图像。

我遇到了这种语法问题。我说“ImageSource”有错误 “New不能在MustInherit的类中使用。”我尝试删除New并将ImageSource声明为String,但代码不会将任何内容返回到我的XAML中。我需要做什么?!?

    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
    Dim EstadoIndex As Integer
    If Integer.TryParse(value.ToString, EstadoIndex) Then
        Select Case EstadoIndex
            Case 1
                Return New ImageSource("/Cogent;component/Images/Green.png")
            Case 2
                Return New ImageSource("/Cogent;component/Images/Red.png")
            Case Else
                Return New ImageSource("/Cogent;component/Images/White.png")
        End Select
    Else
        Return New ImageSource("/Cogent;component/Images/White.png")
    End If
End Function

3 个答案:

答案 0 :(得分:4)

ImageSource是一个抽象类(我想MustInherit这就是你在VB.NET中命名abstract的方式。如果您想要返回图片,可以使用BitmapImage,这会将图片加载到内存中,使用new BitmapImage(new Uri("/Cogent;component/Images/Green.png"))

此外,如果您需要将其设置为Image.Source - 您只需返回字符串,Image就会加载图片。

答案 1 :(得分:1)

感谢OutColdMan和Pondidum,

我不得不做一点点狙击,但基本上这两个想法都在钱上。如果有人感兴趣,这是最终的代码!!

    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
    Dim EstadoIndex As Integer
    Dim bi As New BitmapImage()
    bi.BeginInit()
    'Dim ImageSource As String = "/Cogent;component/Images/White.png"
    If Integer.TryParse(value.ToString, EstadoIndex) Then
        Select Case EstadoIndex
            Case 1
                bi.UriSource = New Uri("/Cogent;component/Images/Green.png", UriKind.RelativeOrAbsolute)
                Return bi
                bi.EndInit()
            Case 2
                bi.UriSource = New Uri("/Cogent;component/Images/Red.png", UriKind.RelativeOrAbsolute)
                Return bi
                bi.EndInit()
            Case Else
                bi.UriSource = New Uri("/Cogent;component/Images/White.png", UriKind.RelativeOrAbsolute)
                Return bi
                bi.EndInit()
        End Select
    Else
        bi.UriSource = New Uri("/Cogent;component/Images/White.png", UriKind.RelativeOrAbsolute)
        Return bi
        bi.EndInit()
    End If
End Function

答案 2 :(得分:0)

在MSDN上检查ImageSource表示您需要使用其中一个子类,即BitmapImage