Мое приложение WPF использует VirtualizingStackPanel для ListView. Прокрутка этого списка работает нормально на двух разных машинах: моей хост-машине (Windows 10 v1803, сборка 17134.228) и одной виртуальной машине (Windows 10 v1607, сборка 14393.2312). Если я запускаю то же приложение, точно такую же копию, на другой моей виртуальной машине (Windows 10 v1803, сборка 17134.165), список не будет плавно прокручиваться - он будет очень медленным. Короткие шаги прокрутки по нескольким строкам - это хорошо (CacheLength), но прокрутка по нескольким строкам очень плохая, в большинстве случаев виртуализация не работает должным образом.
Кто-нибудь знает, зависит ли виртуализация от какого-либо компонента или настроек системы Windows 10?
Просто вставьте часть кода с ListView.
Спасибо за помощь.
Обновление: извините за дезинформацию - прокрутка не медленная, блок прокрутки - это не элемент, а целая страница (возможно, больше, чем страница). Так что визуальный эффект прокрутки плохой.
<ListView Grid.Row="1" Margin="0,-23,0,0" x:Name="LogMessagesListView" ItemsSource="{Binding DataModel.LogMessagesList}"
VirtualizingPanel.ScrollUnit="Item"
VirtualizingPanel.CacheLengthUnit="Page"
VirtualizingPanel.CacheLength="1.1"
VirtualizingPanel.IsVirtualizing="True"
VirtualizingPanel.VirtualizationMode="Recycling"
SelectionMode="Extended" SelectionChanged="LogMessagesListView_SelectionChanged" >
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<EventSetter Event="MouseDoubleClick" Handler="HandleLogMessageDoubleClick"/>
<Setter Property="VerticalContentAlignment" Value="Top"/>
<Setter Property="BorderThickness" Value="0"/>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{Binding DataContext.Runtime.ColumnWidthHighlight, ElementName=root }"/>
<ColumnDefinition Width="{Binding DataContext.Runtime.ColumnWidthLevel , ElementName=root}"/>
<ColumnDefinition Width="{Binding DataContext.Runtime.ColumnWidthDate, ElementName=root}"/>
<ColumnDefinition Width="{Binding DataContext.Runtime.ColumnWidthTime, ElementName=root}"/>
<ColumnDefinition Width="{Binding DataContext.Runtime.ColumnWidthProcess, ElementName=root }"/>
<ColumnDefinition Width="{Binding DataContext.Runtime.ColumnWidthNumber, ElementName=root }"/>
<ColumnDefinition Width="{Binding DataContext.Runtime.ColumnWidthCategory, ElementName=root }"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0" Height="14" Width="15" Margin="-14,0,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" Background="Green" CornerRadius="0" BorderThickness="0" Height="14" HorizontalAlignment="Stretch"
Visibility="{Binding IsBookmarked, Converter={StaticResource BoolToVisibility}}"/>
<Border Grid.Column="1" Background="Yellow" CornerRadius="0" BorderThickness="0" Height="14" HorizontalAlignment="Stretch"
Visibility="{Binding IsHighlighted, Converter={StaticResource BoolToVisibility}}"/>
<Border Grid.Column="2" Background="RoyalBlue" CornerRadius="0" BorderThickness="0" Height="14" HorizontalAlignment="Stretch"
Visibility="{Binding IsSearchTextHighlighted, Converter={StaticResource BoolToVisibility}}"/>
</Grid>
<Image Grid.Column="1" Source="{Binding Level, Converter={StaticResource LevelToImage}}" Width="14" Margin="-2,0,0,0"/>
<TextBlock Grid.Column="2" Text="{Binding LogDate}" Margin="1,0,0,1"/>
<TextBlock Grid.Column="3" Text="{Binding LogTime}" Margin="1,0,0,1"/>
<TextBlock Grid.Column="4" Text="{Binding ProcessName}" Margin="1,0,0,1"/>
<TextBlock Grid.Column="5" Text="{Binding MessageNumber}" Margin="1,0,0,1"/>
<TextBlock Grid.Column="6" Text="{Binding CategoryName}" Margin="1,0,0,1"/>
<local:TextBlockHighlight Grid.Column="7" Margin="1,0,0,1"
IsSelected="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}"
Highlighter="{Binding DataContext.DataModel.Highlighter, ElementName=root}"
LogMessage="{Binding .}"
DummyTrigger="{Binding MessageInlines}" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>