我有一个字典(字符串,字符串),可能没有特定键的条目。
在XAML中,我想通过以下几行介绍这种情况:
<Image Source="{Binding MyDictonary[myKey], UpdateSourceTrigger=PropertyChanged, Converter={StaticResource uriToImageConverter}, TargetNullValue={StaticResource myStaticImage} }"/>
如果我没有绑定到字典,但是我的视图模型中有一个Nothing
的字符串,则该代码可以正常工作。
我还检查了它是否是转换器的保险库,但是如果没有有效的字符串,则永远不会调用该转换器。
在此先感谢您所缺少的帮助/解释。
答案 0 :(得分:1)
您需要为No.ing的“ myKey”添加字典条目(MyDictonary.Add(“ myKey”,Nothing)),以便它可以在不引起异常的情况下获取“ Nothing”值。
另一种实现此目的的方法是在ViewModel上添加一个附加的“ DictionaryValue”属性。
<StackPanel>
<TextBox Text="{Binding DictionaryKey, UpdateSourceTrigger=PropertyChanged}"/>
<Image Source="{Binding DictionaryValue, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource uriToImageConverter}, TargetNullValue={StaticResource myStaticImage} }"/>
</StackPanel>
Public Class ViewModel
Inherits INotifyPropertyChanged
Public Sub New()
MyDictonary = New Dictionary(Of String, String)()
End Sub
Private _key As String
Public Property DictionaryKey As String
Get
Return _key
End Get
Set(ByVal value As String)
If _key <> value Then
_key = value
RaisePropertyChanged(NameOf(DictionaryKey))
RaisePropertyChanged(NameOf(DictionaryValue))
End If
End Set
End Property
Public ReadOnly Property DictionaryValue As String
Get
If DictionaryKey IsNot Nothing AndAlso MyDictonary.Keys.Contains(DictionaryKey) Then
Return MyDictonary(DictionaryKey)
Else
Return Nothing
End If
End Get
End Property
Public Property MyDictonary As Dictionary(Of String, String)
Public Event PropertyChanged As PropertyChangedEventHandler
Private Sub RaisePropertyChanged(ByVal propertyName As String)
PropertyChanged?.Invoke(Me, New PropertyChangedEventArgs(propertyName))
End Sub
End Class