WPF - 防止ComboBox重新绑定

时间:2014-03-17 10:42:14

标签: wpf data-binding mvvm combobox

在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,但我无法让它表现出来。

2 个答案:

答案 0 :(得分:1)

<TextBlock Text="{Binding Converter={StaticResource MyConverter}, Mode=OneTime}" />

答案 1 :(得分:0)

您可以使用FallbackValueTargetNullValue来处理值无法绑定的情况。