WPF ComboBox绑定DisplayMemberPath与SelectedValuePath未按预期生效
问题根因
- 你的绑定目标设置错误:当前你将
Device.ObjectId绑定到了ComboBox.Text属性,该属性返回的是ComboBox界面展示的文本内容,也就是你通过DisplayMemberPath指定的Name属性值,所以赋值结果不符合预期。 - 你设置的
SelectedValuePath="Id"配置本身是正确的,该配置会让ComboBox的SelectedValue属性自动返回选中项的Id属性值,你只需要将绑定目标改为SelectedValue即可。
修正后的代码
XAML部分
<ComboBox ItemsSource="{Binding Objects}" DisplayMemberPath="Name" SelectedValuePath="Id" SelectedValue="{Binding Device.ObjectId, UpdateSourceTrigger=PropertyChanged}"/>
可选优化点
- 建议给
ObservableCollection明确指定泛型类型,避免类型推断问题:
ObservableCollection<Object> Objects = new ObservableCollection<Object>();
- 确保你的ViewModel以及
Device类都实现了INotifyPropertyChanged接口,避免属性变更不通知导致的绑定失效问题。
内容的提问来源于stack exchange,提问作者sadrick
相关产品推荐
相关产品推荐

