увеличить скорость раскрывающегося списка - PullRequest
0 голосов
/ 16 декабря 2011

У меня есть выпадающий список с 3000 предметами. Требуется несколько секунд, чтобы расширить его. Есть ли способ расширить его быстрее? Элементы связаны с использованием ItemsSource и пути привязки:

<ComboBox ItemsSource="{Binding Path=SomeItems}" />

Ответы [ 2 ]

2 голосов
/ 16 декабря 2011

Вы должны использовать панель стека виртуализации для повышения производительности. В этом случае простое изменение ItemspanelTemplate ItemsPanel с StackPanel на VirtualizingStackpanel не принесет никакой пользы, потому что при нажатии на кнопку данные загружаются во всплывающем окне. поэтому вам нужно изменить StackPanel внутри ScrollViewer на VirtualizingStackpanel. Для этого отредактируйте ControlTemplate / Style для комбинированного списка, используя Expression Blend или VS, и измените всплывающую область шаблонов элементов управления, как показано ниже

<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>
0 голосов
/ 26 декабря 2011
            <ComboBox>
                <ComboBox.ItemsPanel>
                    <ItemsPanelTemplate>
                        <VirtualizingStackPanel/>
                    </ItemsPanelTemplate>
                </ComboBox.ItemsPanel>
            </ComboBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...