各グリッドセルがComboBox
. ComboBox の値と選択された値は からバインドされDataContext
ます。問題は、それが非常に遅いことです。フォームを作り直して、コンボボックスの代わりにテキストボックスを表示し (マウス入力時にTextBox
変換される)、すぐに機能するようにしました。ComboBox
ComboBox が非常に遅いのはなぜですか? ComboBoxes の大規模なバインディングを改善する方法はありますか?
各グリッドセルがComboBox
. ComboBox の値と選択された値は からバインドされDataContext
ます。問題は、それが非常に遅いことです。フォームを作り直して、コンボボックスの代わりにテキストボックスを表示し (マウス入力時にTextBox
変換される)、すぐに機能するようにしました。ComboBox
ComboBox が非常に遅いのはなぜですか? ComboBoxes の大規模なバインディングを改善する方法はありますか?
ComboBox
デフォルトでは virtualization( ) を使用しませんVirtualizingStackPanel
。コントロールが使用するパネルを非常に簡単な方法で変更できます。
<ComboBox ItemsSource="{Binding}">
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>
参照: UI 仮想化によるコンボボックスのパフォーマンスの向上
これは、何千ものアイテムがある場合にパフォーマンスを向上させるのにComboBox
非常に役立ちますが、1000 個のコンボボックスを持つことは UI にとって多くの場合にどれだけ役立つかはわかりません。
これらのコンボボックスを仮想化パネルに配置することもできます (のようにListBox
、または直接使用してVirtualizedStackpanel
)。
もう 1 つの方法は、プロパティComboBox
ItemSource
を使用してバインドを非同期にすることです。IsAsync
あなたがあなたとして使っていることを願ってObservableCollection
いますItemSource
;