私は3000アイテムのコンボボックスを持っています。それを広げるのに数秒かかる。それをより速く展開する方法はありますか?項目はのItemsSourceと結合パスを使用してバインドされている:あなたは、パフォーマンスを改善するために、仮想化のStackPanelを使用する必要がコンボボックス拡張スピードを高める
<ComboBox ItemsSource="{Binding Path=SomeItems}" />
私は3000アイテムのコンボボックスを持っています。それを広げるのに数秒かかる。それをより速く展開する方法はありますか?項目はのItemsSourceと結合パスを使用してバインドされている:あなたは、パフォーマンスを改善するために、仮想化のStackPanelを使用する必要がコンボボックス拡張スピードを高める
<ComboBox ItemsSource="{Binding Path=SomeItems}" />
<ComboBox>
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel/>
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>
。この場合、ItemsPanelのItemspanelTemplateをStackPanelからVirtualizingStackpanelに変更するだけでは、マジックは実行されません。これは、ダウンボタンを押すとPopupにデータがロードされるためです。 ScrollViewer内のStackPanelをVirtualizingStackpanelに変更する必要があります。 // BEA:Expression Blendのか、VSを使用してコンボボックスの[編集]のControlTemplate /スタイルということをして、
<Popup
Name="Popup"
Placement="Bottom"
IsOpen="{TemplateBinding IsDropDownOpen}"
AllowsTransparency="True"
Focusable="False"
PopupAnimation="Slide">
<Grid
Name="DropDown"
MinWidth="{TemplateBinding ActualWidth}"
MaxHeight="{TemplateBinding MaxDropDownHeight}">
<Border
x:Name="DropDownBorder"
Background="{StaticResource WindowBackgroundBrush}"
BorderThickness="1"
BorderBrush="{StaticResource SolidBorderBrush}"/>
<ScrollViewer Margin="4,6,4,6">
<VirtualizingStackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained" />
</ScrollViewer>
</Grid> </Popup>
以下
あなたの答えをありがとうが、それは過剰です:) –
のようなコントロールテンプレートのポップアップエリアを変更するには、ここで[UI仮想化](HTTPのためのいくつかのコンボボックスのコードです。 stollnitz.com/blog/?p=338) –