在WPF列表视图中逐项滚动

Tok*_*ans 5 c# wpf xaml

我有一个列表视图,它的高度非常小,但有3-4个listviewitems占用了Listview的整个大小(所以一次只能显示一个项目)

如果用户滚动它,列表视图一次不滚动1个项目,它一次滚动2个项目(单个滚动)

你会如何设置它1滚动=一个项目向下/向上?

希望我明白这一点,如果不是只是告诉我.

ter*_*rry 5

我假设您在这里谈论的是 MouseWheel 滚动条。

鼠标滚轮滚动真的取决于IScrollInfo执行。我建议你在做之前自己处理MouseWheel事件ScrollViewer。所以基本上,您可以执行以下操作:

处理PreviewMouseWheel事件ListBox

<ListBox PreviewMouseWheel="ListBox_PreviewMouseWheel" Height="108" Width="100" x:Name="list" >
    <Button Content="Button 1" Height="100"/>
    <Button Content="Button 2" Height="100"/>
    <Button Content="Button 3" Height="100"/>
    <Button Content="Button 4" Height="100"/>
    <Button Content="Button 5" Height="100"/>
    <Button Content="Button 6" Height="100"/>
    <Button Content="Button 7" Height="100"/>
    <Button Content="Button 8" Height="100"/>
    <Button Content="Button 9" Height="100"/>
</ListBox>
Run Code Online (Sandbox Code Playgroud)

在后面的代码,解雇ScrollBar.LineDownCommandScrollBar.LineUpCommand滚动时向上或向下。

private void ListBox_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
    if (e.Delta > 0)
    {
        ScrollBar.LineDownCommand.Execute(null, e.OriginalSource as IInputElement);
    }
    if (e.Delta < 0)
    {
        ScrollBar.LineUpCommand.Execute(null, e.OriginalSource as IInputElement);
    }
    e.Handled = true;
}
Run Code Online (Sandbox Code Playgroud)

因此,您将MouseWheel滚动条转换为LineDown/LineUp