我有我綁定到的ItemsSource一個列表框,如下所示:何時爲ListBox創建ListBoxItems?
var foos = new ObservableCollection<Foo> { foo1, foo2, foo3 };
var listBox = new ListBox { ItemsSource = _foos };
現在我希望做一些操作馬上對持有項目ListBoxItems,但他們似乎並沒有被正確的創建遠。他們?是否有一些事件可以收聽,或者我只是試圖以無效的方式獲取ListBoxItem?我做這樣的(和已驗證它工作的地方,我知道列表框「準備好」):
var lbi = listBox.ItemContainerGenerator.ContainerFromItem(foo1) as ListBoxItem;
注意,這是在單元測試正在做,所以我想ListBox中從未呈現。這就是爲什麼ListBoxItems沒有創建?我可以手動觸發創建ListBoxItems嗎?
Thx。將查看文章並嘗試使用StatusChanged事件。我已經在使用MVVM,視頻確實很棒。但是,在這種情況下,我需要回顧繼承我正在處理的ListBox的自定義控件的單元測試的詳細信息。 – stiank81 2010-09-10 09:08:37
@ stiank81:如果列表中的項目很少,則可以使用ListBox上的VirtualizingStackPanel.IsVirtualizing =「False」禁用虛擬化。對於小數據集這不會是一個問題。根據您的單元測試,您也可以僅在單元測試時禁用虛擬化。 – HCL 2010-09-10 09:37:09
是的,我只想爲單元測試做到這一點,但它似乎並沒有從代碼中得到它。它說這是一個私有財產,但爲什麼我可以從xaml到達?任何想法,如果我可以以某種方式觸發代碼? – stiank81 2010-09-10 10:10:40