ListView WPF:如何操作LargeChange和其他按钮
我有一个ScrollViewer,它有一个项目源。其中的项目数量可能达到数万个,并从web服务器流式传输。我们已经在设置这两个属性:ListView WPF:如何操作LargeChange和其他按钮,wpf,performance,scrollbar,Wpf,Performance,Scrollbar,我有一个ScrollViewer,它有一个项目源。其中的项目数量可能达到数万个,并从web服务器流式传输。我们已经在设置这两个属性: VirtualizingStackPanel.VirtualizationMode="Recycling" ScrollViewer.IsDeferredScrollingEnabled="True" 这些工作在拖动拇指(滚动条中间的按钮)周围非常完美,但是当用户按住向下箭头或点击并按下RealeRePATButton或IncreaseRepeatButton
VirtualizingStackPanel.VirtualizationMode="Recycling" ScrollViewer.IsDeferredScrollingEnabled="True"
这些工作在拖动拇指(滚动条中间的按钮)周围非常完美,但是当用户按住向下箭头或点击并按下RealeRePATButton或IncreaseRepeatButton(拇指上下不可见的按钮)时,延迟的滚动不再受尊重,项目滚动到视图中并浏览服务器资源
我想做两件事: 1) 向下/向上箭头使用延迟滚动。如果没有,我们可以增加重复按钮的延迟,这样按下按钮就不会连续滚动 2) 更新减少/增加重复按钮的较大更改,以便用户每次滚动10% 我已经尝试从“PART_VerticalScrollBar”的可视化树中向下搜索,并在System.Windows.Controls.Primitives.ScrollBar上设置了较大的更改,但没有成功 我可以钩住滚动条的属性并更新拇指的位置,但是我不能再拖动拇指了任何帮助都将不胜感激。我让它与控制模板一起工作。它看起来仍然像地狱,但它的工作
<ControlTemplate x:Key="templateScroll"
TargetType="{x:Type ScrollBar}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="1*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<RepeatButton Grid.Row="0"
Command="ScrollBar.LineUpCommand" Interval="1000" Style="{DynamicResource Scrollbar_LineButton}" Content=" ^" />
<Track Grid.Row="1" Name="PART_Track">
<Track.DecreaseRepeatButton>
<RepeatButton Command="ScrollBar.PageUpCommand" Interval="1000" />
</Track.DecreaseRepeatButton>
<Track.Thumb>
<Thumb />
</Track.Thumb>
<Track.IncreaseRepeatButton>
<RepeatButton Command="ScrollBar.PageDownCommand" Interval="1000"/>
</Track.IncreaseRepeatButton>
</Track>
<RepeatButton Grid.Row="2" Interval="1000" Command="ScrollBar.LineDownCommand" Style="{DynamicResource Scrollbar_LineButton}" Content=" v" />
</Grid>
</ControlTemplate>
scrollBarControl.SetValue(System.Windows.Controls.Primitives.ScrollBar.TemplateProperty, Me.Resources("templateScroll"))