У меня есть ListBox с 1000 элементами, и когда выбран конкретный элемент, элемент расширяется (как я выбрал шаблон ListBox Selected Item), предоставляя пользователю дополнительную информацию.
Проблема в том, что когда я щелкаю на ListBox, вместо расширения выбранного элемента, ListBox расширяет какой-то другой элемент.
Я смог решить эту проблему, установив ScrollViewer.CanContentScroll="False"
, но он удалил виртуализацию, из-за чего элемент управления стал работать очень медленно.Поправьте меня, если я ошибаюсь, шаблон ListBoxItem, который эффективно изменяет высоту элемента, также удалит виртуализацию.
Вот xaml для ListBox:
<ListBox x:Name="AllPortfoliosList" Grid.Column="0" Grid.Row="0" ClipToBounds="False" Style="{StaticResource LooklessListBox}"
ItemsSource="{Binding AllPortfolioInfos}"
ScrollViewer.CanContentScroll="False"
ItemContainerStyle="{StaticResource RosterListItem}" />
RosterListItem:
<Style x:Key="RosterListItem" TargetType="{x:Type ListBoxItem}">
<Setter Property="Background" Value="Transparent" />
<Setter Property="Template" Value="{DynamicResource item_rosterDetails}" />
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Padding" Value="0,0,0,0" />
<Setter Property="ClipToBounds" Value="False" />
<Style.Triggers>
<Trigger Property="Selector.IsSelected" Value="True">
<Setter Property="Template" Value="{DynamicResource Item_watchDetails}" />
</Trigger>
</Style.Triggers>
</Style>
Item_watchDetails:
<ControlTemplate x:Key="Item_watchDetails">
<Grid x:Name="grid_watch_details" HorizontalAlignment="Stretch" VerticalAlignment="Top" SnapsToDevicePixels="True">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
...
</ControlTemplate>
Как мне решить эту проблемугде ListBox все еще поддерживает виртуализацию и включает шаблоны элементов с помощью прокрутки