我正在使用WPF组合框。我需要知道如何执行以下操作:当我在弹出的组合框中选择组合框项目时,它不应该在内容中更新。它应该只在我使用MVVM中的Bindings设置SelectedItem
时才会改变。
请给我任何想法。
答案 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>