我有一个ComboBox与以下XAML
<ComboBox Name="CompanyComboBox"
ItemsSource="{Binding Path=CompanyList, Mode=OneWay}"
SelectedItem="{Binding Path=CurrentCompany, Mode=TwoWay}"
DisplayMemberPath="Name" />
问题:'company'上的选定选项是持久的,但在加载时永远不会显示 . 什么遗失或出错,或者我忘了做什么?
-
CompanyList有数据,ComboBox确实填充了
-
ComboBox上的选择确实通过TwoWayBinding保存到数据库
-
More code is on pastebin.com,ViewModel和Company类代码 .
我试过以下建议, that have so far not solve the issue :
-
Two-way bind a combobox to a simple string array ItemSource和SelectedValue属性的顺序是正确的
-
ComboBox.SelectedValue not updating from binding source在'SelectedValue'和'SelectedIndex'之间交替 - 无效
-
Silverlight 4 Combobox with selectedValue using MVVM-Light在设置新值之前提升PropertyChanged也没有帮助
-
在ComboBox上添加/删除'IsEnabled="'也没有帮助
-
添加SelectedValuePath = "Name"或= "Value"停止了保存工作
4 回答
如果对象的数据相同,则需要覆盖
Company.Equals()
方法以返回true
.默认情况下,如果被比较的两个公司对象在内存中共享相同的位置,它只返回
true
,我猜你的CurrentCompany
对象没有指向CompanyList
中的对象,所以SelectedItem
被设置为null
检查分配给CurrentCompany的实例是否是CompanyList中包含的实际实例,而不是它的副本 .
您可以尝试这样做:在ViewModel中填充CompanyList之后,将CurrentCompany设置为第一个公司,或者设置一个虚拟项目,或者根据您的上下文 .
我们可以看一下视图模型吗?在此信息不存在之前,可以进行以下暂停 .
CurrentCompany属性不是公共属性或不是属性 .
View模型未实现INotifyPropertyChanged接口 .
CurrentCompany属性的Setter不包含PropertyChanged事件通知 .