Мое приложение WPF использует VirtualizingStackPanel для ListView. Прокрутка этого списка отлично работает на двух разных машинах: на моей хост-машине (Windows 10 v1803, сборка 17134.228) и одной виртуальной машине (Windows 10 v1607, сборка 14393.2312). Если я запускаю то же приложение, точно такую же копию, на другой моей виртуальной машине (Windows 10 v1803 build 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>
Настройки мыши (также расширенные) на всех 3 машинах одинаковы. Единственная разница между рабочей и неработающей ВМ заключается в списке аппаратных устройств мыши: HID-совместимая мышь (на рабочей виртуальной машине) и USB-указательное устройство VMware (на ни одной рабочей виртуальной машине). Я проверю это позже сегодня вечером. Спасибо.





Возможно, я считаю, что некоторые настройки для конкретной машины. Можете ли вы проверить "Настройки мыши"?