更改的WPF组合框选择不应在UI中更新

时间:2013-12-30 06:59:49

标签: wpf wpf-controls

我正在使用WPF组合框。我需要知道如何执行以下操作:当我在弹出的组合框中选择组合框项目时,它不应该在内容中更新。它应该只在我使用MVVM中的Bindings设置SelectedItem时才会改变。

请给我任何想法。

4 个答案:

答案 0 :(得分:0)

在Binding中设置BindingMode OneWay。 BindingMode

答案 1 :(得分:0)

您可以使用BindingMode作为单向方法来实现相同目的。

SelectItem="{Binding YourPropertyName Mode=Oneway}"

答案 2 :(得分:0)

从弹出窗口中选择项目,将设置内容。但是如果你想要阻止它,你可以通过manually updating Target on selectionChanged event来做到这一点,并确保binding mode is set to OneWay,以便更改不会在源类中绑定selectedItem。

示例XAML:

<ComboBox ItemsSource="{Binding Objects}"
          SelectionChanged="ComboBox_SelectionChanged"
          SelectedItem="{Binding SelectedPropertyInClass, Mode=OneWay}"/>

代码背后:

private void ComboBox_SelectionChanged(object sender,
                                       SelectionChangedEventArgs e)
{
    var expression = BindingOperations.GetBindingExpression(sender as ComboBox, 
                                                 ComboBox.SelectedItemProperty);
    expression.UpdateTarget();
}

在这里,我们得到Binding表达式并在任何选择更改事件上手动更新目标。

答案 3 :(得分:0)

您可以使用UpdateSourceTrigger=PropertyChanged

<ComboBox Name="cb_users" DisplayMemberPath="Email"  

SelectedItem="{Binding selectedUser,Mode= TwoWay,UpdateSourceTrigger=PropertyChanged}"

ItemsSource="{Binding UserList}"> /ComboBox>