windows8開發-關於ListBox中的Items元素

來源:互聯網
上載者:User

ListBox中的Items集合,是ItemsSource集合的映射。在API中是這麼聲明和定義的:

        //        // 摘要:        //     擷取用於產生控制項內容的集合。        //        // 返回結果:        //     如果存在用於產生控制項內容的集合,則為該集合;否則為 null。預設值為空白集合。        public ItemCollection Items { get; }

如果ListBox的ItemsSource是List<long>, 那麼Items也就是List<long>類型;如果是ObservableCollection<someClassType>, 那Items也就是此類型集合。

通過Items,除了查看資料來源的用途,還能做什麼呢?下面將會討論一下,關於使用Items在初始化ListBox時設定預設多項選擇的狀態的用法。

雖然是比較細小的功能,但是值得瞭解一下。以下是一個樣本說明:

(1)首先建立ListBox的資料來源,該資料來源是類型為ListBoxItem的集合。

       List<ListBoxItem> items = new List<ListBoxItem>();       for (int i=1; i<=12; ++i)       {          items.Add(new ListBoxItem() { Content = i });  // 實際用到的資料會是整型i, 包含在ListBox的Content中       }       MonthLB.ItemsSource = items;

(2)接著定義一個公有成員,設定get,set訪問器,用於擷取選中的ListBoxItem項和初始化設定被選中的項。

public List<int> SelectedMonths        {            get            {                List<int> months = new List<int>();                foreach (ListBoxItem item in MonthLB.Items)                {                    if (item.IsSelected) // 該ListBoxItem為選中狀態                    {                        months.Add((int)item.Content);                    }                }                return months;            }            set            {                if (value == null || value.Count == 0)                {                    foreach (var item in MonthLB.Items)                        (item as ListBoxItem).IsSelected = true;                }                else                {                   if(value == null)            {MonthLB.ItemsSource = null;return;            }                    foreach (var index in value)                    {                        if (index < 0) index = 0;// 設定該ListBoxItem的 IsSelected = true, 即為選中狀態                        (MonthLB.Items[index] as ListBoxItem).IsSelected = true;                    }                }            }        }

(3)ListBox的屬性SelectionMode設定為複選狀態,即SelectionMode="Multiple"。這樣就可以實現ListBox的複選和初始化多選狀態啦。

可能還有更好的辦法,但我沒找到;如果誰知道,please tell me。
~_~

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

Tags Index: