我有我的組合框在WPF/MVVM項目中的問題。更改ViewModel後(我正確使用所有內容:INotifyPropertyChanged
,ObservableCollection
等),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.Empty
null
,但沒有正確更新組合框(舊值保持),如果是的SelectedItem string.Empty
。只有在SelectedItem爲null
的值時纔會清除。
這是怎麼發生的?
// 編輯:
也許我解釋是錯誤的。我有兩個網格:左邊有樹和文件,右邊有選定文件的屬性。當我第一次選擇沒有設置屬性的文件A
時,組合框是空的。如果我選擇文件B
,它具有此屬性設置,它會出現在組合框中。接下來,如果我選擇具有空屬性的文件C
,則舊值將保留在ComboBox中(從選定文件之前 - B
)。如果C
的該屬性爲null
,而不是string.Empty
,則清除組合框。
我忘了添加,我更改ViewModel(對於文件actualy),如果下一個文件(ViewModel)具有空的SelectedItem,組合框不會更改其值。 –
既然你正在處理字符串,你有沒有嘗試過使用'SelectedValue'而不是'SelectedItem'? – ShadeOfGrey
是的,這是解決方案。但我不明白爲什麼它的工作。 –