我在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
答案 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