2013-01-16 80 views
-1

我有我的組合框在WPF/MVVM項目中的問題。更改ViewModel後(我正確使用所有內容:INotifyPropertyChangedObservableCollection等),ComboBox並不總是改變它的值。我已經對它進行了調試,並且來自ViewModel的getter返回了正確的值(string.Empty),但ComboBox從列表中顯示了一個值。下面的代碼了一下:在WPF/MVVM與空和空字符串組合框

// It doesn't work. 
<ComboBox ItemsSource="{Binding ItemsCollection}" SelectedItem="{Binding SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> 

// It works. 
<TextBlock Text="{Binding SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> 

TextBlock的正確更新,如果是的SelectedItem或string.Emptynull,但沒有正確更新組合框(舊值保持),如果是的SelectedItem string.Empty。只有在SelectedItem爲null的值時纔會清除。
這是怎麼發生的?

// 編輯

也許我解釋是錯誤的。我有兩個網格:左邊有樹和文件,右邊有選定文件的屬性。當我第一次選擇沒有設置屬性的文件A時,組合框是空的。如果我選擇文件B,它具有此屬性設置,它會出現在組合框中。接下來,如果我選擇具有空屬性的文件C,則舊值將保留在ComboBox中(從選定文件之前 - B)。如果C的該屬性爲null,而不是string.Empty,則清除組合框。

+0

我忘了添加,我更改ViewModel(對於文件actualy),如果下一個文件(ViewModel)具有空的SelectedItem,組合框不會更改其值。 –

+1

既然你正在處理字符串,你有沒有嘗試過使用'SelectedValue'而不是'SelectedItem'? – ShadeOfGrey

+0

是的,這是解決方案。但我不明白爲什麼它的工作。 –

回答

0

使用CollectionViewSource代替ObservableCollection for ComboBox。

+2

它沒有幫助。 –