![](/img/trans.png)
[英]WPF change selected value in one ComboBox by another ComboBox in MVVM
[英]How to set the value If the combobox does not change the value in WPF MVVM pattern
在我的WPF应用程序中,我有一个组合框。 它通过MVVM设计模式绑定数据。 工作正常。
在XAML中
<ComboBox x:Name="comboBox1" ItemsSource="{Binding ValetType}" DisplayMemberPath="Name"
SelectedItem="{Binding SelectedItemValet, Mode=TwoWay}" IsSynchronizedWithCurrentItem="True"/>
在ViewModel中
valetTypes = GetValueForValet();
public ObservableCollection<Valet> ValetType
{
get { return valetTypes; }
set { valetTypes = value; NotifyPropertyChanged("ValetType"); }
}
public Valet SelectedItemValet
{
get { return selectedItemValet;}
set { selectedItemValet = value; NotifyPropertyChanged("SelectedItemValet"); }
}
我面临的问题之一是,当我不更改组合框值时,它将绑定为null,否则它将绑定。 我将IsSynchronizedWithCurrentItem设置为true,它告诉Selector应该保持SelectedItem与当前项目同步。 但是不行。 我该怎么办? 我是WPF MVVM的新手。
简单的解决方案是为SelectedItemValet
提供默认值。
在ViewModel的某些方法中(初始化ViewModel时会调用它)(通常是构造函数),可以将SelectedItemValet
设置为所需的值
您的代码中有一个问题:
public ValetServices SelectedItemValet
{
get { return selectedItemValet;}
set { selectedItemValet = value; NotifyPropertyChanged("SelectedItemValet"); }
}
ValetType
是类型Valet
,但是SelectedItemValet
是类型ValetServices
。 他们应该匹配。 更改后,例如要选择第一项,请执行以下操作:
valetTypes = GetValueForValet();
this.SelectedItemValet=ValetType.FirstOrDefault();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.