Xaml 未显示Silverlight 4 MVVM组合框数据绑定

Xaml 未显示Silverlight 4 MVVM组合框数据绑定,xaml,data-binding,silverlight-4.0,mvvm,combobox,Xaml,Data Binding,Silverlight 4.0,Mvvm,Combobox,我有一个带有以下XAML的组合框 <ComboBox Name="CompanyComboBox" ItemsSource="{Binding Path=CompanyList, Mode=OneWay}" SelectedItem="{Binding Path=CurrentCompany, Mode=TwoWay}" DisplayMemberPath="Name" /> 问题: “公司”上所选的选项将被保留,但不会在加载时显示。遗漏了什么或出了什

我有一个带有以下XAML的组合框

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

问题:

“公司”上所选的选项将被保留,但不会在加载时显示。遗漏了什么或出了什么问题,或者我忘记做什么了

  • CompanyList有数据,并且ComboBox会被填充
  • 组合框上的选择通过双向绑定保存到数据库
  • ,视图模型和公司类别代码
我尝试了以下建议,到目前为止还没有解决问题:

  • 上ItemSource和SelectedValue属性的顺序正确
  • 在“SelectedValue”和“SelectedIndex”之间交替使用-两者都不起作用
  • 在设置新值之前提高PropertyChanged也无济于事
  • 在组合框上添加/删除“IsEnabled=“{Binding IsReady}”也没有帮助
  • 添加SelectedValuePath=“Name”或=“Value”将停止保存

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


    默认情况下,如果要比较的两个公司对象在内存中共享同一位置,它只返回
    true
    ,我猜您的
    CurrentCompany
    对象没有指向
    CompanyList
    中的对象,因此
    SelectedItem
    被设置为
    null
    检查分配给它的实例是否为o CurrentCompany是CompanyList中包含的实际公司,而不是它的副本。

    您可以尝试以下方法:
    在ViewModel中填充CompanyList后,将CurrentCompany设置为第一个company,或者设置一个显示或取决于您的上下文的虚拟项。

    我们可以查看视图模型吗?在没有此信息之前,可能会给出以下怀疑

  • CurrentCompany属性不是公共的或不是属性
  • 视图模型未实现INotifyPropertyChanged接口
  • CurrentCompany属性的Setter不包含PropertyChanged事件通知

  • “公司”上的所选选项是持久化的,但不会在加载时显示。这是什么意思?您的组合框没有初始的“selectedItem”(在单击它打开下拉列表之前,框是空的)?我的意思是将更改保存到数据库中。同时更正没有“初始选定项”