2011-02-17 47 views
1

我有一個ComboBoxItemSource綁定到一個字符串列表(idealy我會使用一個枚舉),這是使用MVVM模式完成的。Silverlight組合框不顯示綁定項目#

現在我想綁定一個對象到ComboBox,它被稱爲SelectedUser,我想綁定它的屬性:UserType,這是一個字符串。

所以我有這樣的:

<ComboBox ItemsSource="{Binding Path=Usertypes}" SelectedValue="{Binding Mode=TwoWay, Path=SelectedUser.UserType}" /> 

它的工作原理,它確實改變了所選用戶的價值,如果我用它玩,但問題是,它不會顯示在ComboBox除非什麼我選擇一個用戶,然後更改ComboBox選擇,然後它可以工作,但僅適用於該用戶。

我想,當我加入那些ComboBox沒有表現出任何東西玩弄DisplayMemberPathSelectedValuePathSelectedItem, (仍有選項可供選擇,但他們看不到什麼的)。

那麼我該怎麼做?這是一個錯誤? 我不得不提,我有另一個ComboBox有一個整數列表,它工作正常。

更新:

我被告知,我得到這個問題,因爲我比較ComboBox中字符串的字符串,實際上並不相同。

我的字符串來自實體框架通過RIA服務。 (User.UserType) 當它將它與ComboBox ItemSource中的字符串列表進行比較時,由於某種奇怪的原因,它們並不相等。

而且我也聽說過,我可能必須重寫該檢查的Equal方法。 但我不確定在哪裏以及如何這樣做。

回答

0

如果SelectedUser發生變化,是否通知視圖?我可以想象這可能是問題;如果沒有這樣的通知,ComboBox將不會重新加載SelectedValue如果選擇了另一個用戶,它只會更新綁定,如果您自己進行更改。

如果不是這樣,那麼除非當前值與源列表中的某個值完全匹配,否則您還需要考慮未顯示選定值。

+0

是的,SelectedUser實現INotifyPropertyChanged。正如我所提到的,其他ComboBox(和TextBoxes)工作正常。 – Notter 2011-02-17 16:03:07