我有一個WPF窗體,其中包含30x30網格,其中每個網格單元格是ComboBox
。組合框值和選定值從DataContext
開始綁定。問題是它變得非常緩慢。我修改了表單,使其顯示文本框而不是組合框(並且TextBox
在鼠標輸入時轉換爲ComboBox
),現在它立即工作。1000 combobox binding
爲什麼組合框太慢?有什麼方法可以改進ComboBoxes的大規模綁定嗎?
我有一個WPF窗體,其中包含30x30網格,其中每個網格單元格是ComboBox
。組合框值和選定值從DataContext
開始綁定。問題是它變得非常緩慢。我修改了表單,使其顯示文本框而不是組合框(並且TextBox
在鼠標輸入時轉換爲ComboBox
),現在它立即工作。1000 combobox binding
爲什麼組合框太慢?有什麼方法可以改進ComboBoxes的大規模綁定嗎?
ComboBox
不使用默認的虛擬化(VirtualizingStackPanel
),你可以改變一個非常簡單的方式使用控制面板:
<ComboBox ItemsSource="{Binding}">
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>
編號:Improving Combobox Performance through UI Virtualization
這有很大幫助如果ComboBox
擁有數千個項目,可以提高性能,但不確定它會對您的情況有多大幫助,因爲擁有1000個組合框對於UI來說非常重要。
您也可以嘗試將這些組合框置於虛擬化面板中(如ListBox
或直接使用VirtualizedStackpanel
)。
您可以嘗試的另一件事是使您的ComboBox
ItemSource
綁定異步使用IsAsync
屬性。
我希望您使用ObservableCollection
作爲您的ItemSource
;
你使用虛擬ComboBox? (有關示例,請參閱文章[UI虛擬化](http://bea.stollnitz.com/blog/?p=338))。 – 2012-06-25 06:09:04