在WPF表单上有一个绑定的组合框,并希望在不影响源对象的情况下更改绑定上的文本值,因此我选择使用转换器:
<ComboBox ItemsSource="{Binding People}" SelectedValuePath="PersonID" SelectedValue="{Binding SelectedPerson}" >
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Converter={StaticResource MyConverter}}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
NoSeedConverter接受“Person”对象并操纵“Name”属性以根据对象的其他属性返回字符串。
当用户在表单中时,这可以正常工作。但是,该表单是更广泛的MVVM应用程序的一部分,当用户按下导航按钮时,该应用程序将不同的表单内容加载到主窗口中。当用户离开此表单时,Combobox会尝试重新绑定空源,我的Converter会抛出错误。
在实践中,通过检查Converter代码中的内容可以很容易地处理这个问题,但它很麻烦且很难看。实际上,这个Combobox在加载后永远不需要重新绑定。有没有办法阻止它重新绑定?我尝试过使用UpdateSourceTrigger,但我无法让它表现出来。
答案 0 :(得分:1)
<TextBlock Text="{Binding Converter={StaticResource MyConverter}, Mode=OneTime}" />
答案 1 :(得分:0)
您可以使用FallbackValue
和TargetNullValue
来处理值无法绑定的情况。