2011-08-15 107 views
2

我有以下XAML組合框Silverlight 4的MVVM組合框的數據綁定未顯示

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

問題:

上「公司」所選擇的選項依然存在,但從來沒有在加載時顯示。有什麼遺漏或出錯,或者我忘記了什麼?

  • CompanyList有數據,以及組合框確實得到填充
  • 在組合框中選擇不通過TwoWayBinding
  • More code is on pastebin.com,視圖模型和公司類代碼保存到數據庫中。

我曾嘗試以下建議,到目前爲止已不能解決問題:的的ItemSource和的SelectedValue屬性上「的SelectedValue」之間是正確的

  • ComboBox.SelectedValue not updating from binding source交替

    1. Two-way bind a combobox to a simple string array訂單'SelectedIndex' - 既不工作
    2. Silverlight 4 Combobox with selectedValue using MVVM-Light在設置新值之前提高PropertyChanged也沒有幫助
    3. 添加/刪除「的IsEnabled =「{結合的isReady}」的組合框都於事無補
    4. 添加SelectedValuePath =‘名稱’或=‘值’從停止工作保存
  • +0

    你是什麼意思與「關於‘公司’所選擇的選項依然存在,但從來沒有被顯示在負載。」 ?你的組合框沒有初始的「selectedItem」(該框是空的,直到你點擊它打開下拉菜單)? – oXeNoN

    +0

    通過persissed我的意思是變化得到保存到數據庫。還糾正沒有'intiial selected item' –

    回答

    3

    您需要如果對象的數據相同,則覆蓋Company.Equals()方法以返回true

    默認情況下,如果進行比較的兩個公司對象共享內存中的相同點它只返回true,和我猜測,你CurrentCompany對象不指向一個對象在CompanyList,所以SelectedItem被設置爲null

    +0

    謝謝,我知道這是我錯過的東西,這工作得很好。 –

    1

    檢查分配給CurrentCompany的實例是CompanyList中包含的實例,而不是它的重複實例。

    0

    你可以試試這個:在您的視圖模型填充CompanyList後 的CurrentCompany設置的第一家公司,或者說虛擬物品,或取決於上下文。

    0

    我們可以看看視圖模型嗎?在此信息不存在之前,可能會提供以下暫停信息。

    1. CurrentCompany屬性不公開或不屬性。
    2. 視圖模型沒有實現INotifyPropertyChanged接口。
    3. CurrentCompany屬性的setter不包含PropertyChanged事件通知。