Wpf Combox 的兩個注意點
阿新 • • 發佈:2019-02-17
Wpf 中使用Combo Box 是很方便的。將List 或者ObservableCollection繫結到ComboBox的資料來源,可以很方便的將資料套入控制元件中。
問題來了。
-
Combo Box 的專案在後臺進行部分更新後,如何在介面上及時重新整理
-
Combo Box的資料來源需要變化時,如何保持ComboBox當前選中的專案
第一個問題其實很簡單,不過在找到解決方案之前我繞了不少彎路,我以為只要容器為ObservableCollection就萬事大吉了,忽視了容器內的單元也必須擁有INotify的特性才能產生應有的化學作用。
第二個問題,關鍵在於Equal方法的實現。
以一個Student
public bool Equals(Student other) { if (other == null) { return false; } else { return Name == other.Name; } } public sealed override bool Equals(object obj) { var otherMyItem = obj as Student; if (Object.ReferenceEquals(otherMyItem, null)) return false; return otherMyItem.Equals(this); }
第二個Equal是必須的否則不能達到重新整理資料來源,而選中項不變的效果。
以上。