未显示Silverlight 4 MVVM ComboBox数据绑定

时间:2011-08-15 13:10:09

标签: xaml data-binding silverlight-4.0 mvvm combobox

我有一个包含以下XAML的ComboBox

<ComboBox Name="CompanyComboBox"
    ItemsSource="{Binding Path=CompanyList, Mode=OneWay}" 
    SelectedItem="{Binding Path=CurrentCompany, Mode=TwoWay}"
    DisplayMemberPath="Name" />
  

问题:

     

“公司”上的所选选项会保留,但永远不会在加载时显示。什么遗失或出错,或者我忘了做什么?

  • CompanyList有数据,ComboBox确实已填充
  • ComboBox上的选择确实通过TwoWayBinding
  • 保存到数据库
  • More code is on pastebin.com,ViewModel和公司类代码。

我已经尝试了以下建议,到目前为止还没有解决问题

  1. Two-way bind a combobox to a simple string array ItemSource和SelectedValue属性的顺序是正确的
  2. ComboBox.SelectedValue not updating from binding source在'SelectedValue'和'SelectedIndex'之间交替显示 - 无法正常工作
  3. Silverlight 4 Combobox with selectedValue using MVVM-Light在设置新值之前提升PropertyChanged也没有帮助
  4. 在ComboBox上添加/删除'IsEnabled =“{Binding IsReady}'也无济于事
  5. 添加SelectedValuePath =“Name”或=“Value”停止了正在运行的保存

4 个答案:

答案 0 :(得分:3)

如果对象的数据相同,则需要覆盖Company.Equals()方法以返回true

默认情况下,如果被比较的两个公司对象共享内存中的相同位置,它只返回true,我猜你的CurrentCompany对象没有指向{{1}中的对象因此CompanyList设置为SelectedItem

答案 1 :(得分:1)

检查分配给CurrentCompany的实例是否是CompanyList中包含的实际实例,而不是它的副本。

答案 2 :(得分:0)

你可以试试这个: 在ViewModel中填充公司列表后,将当前公司设置为第一家公司,或将虚拟项目设置为或根据您的上下文。

答案 3 :(得分:0)

我们可以看一下视图模型吗?在此信息不存在之前,可以进行以下暂停。

  1. CurrentCompany属性不公开或不属于。
  2. View model未实现INotifyPropertyChanged接口。
  3. CurrentCompany属性的Setter不包含PropertyChanged事件通知。