1. 程式人生 > >Wpf Combox 的兩個注意點

Wpf Combox 的兩個注意點

Wpf 中使用Combo Box 是很方便的。將List 或者ObservableCollection繫結到ComboBox的資料來源,可以很方便的將資料套入控制元件中。

問題來了。

  1. Combo Box 的專案在後臺進行部分更新後,如何在介面上及時重新整理

  2. Combo Box的資料來源需要變化時,如何保持ComboBox當前選中的專案

第一個問題其實很簡單,不過在找到解決方案之前我繞了不少彎路,我以為只要容器為ObservableCollection就萬事大吉了,忽視了容器內的單元也必須擁有INotify的特性才能產生應有的化學作用。

第二個問題,關鍵在於Equal方法的實現。

以一個Student

類為例,以Name做主鍵,需要加入以下方法

        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是必須的否則不能達到重新整理資料來源,而選中項不變的效果。

以上。