Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF列表视图中逐项滚动_C#_Wpf_Xaml - Fatal编程技术网

C# 在WPF列表视图中逐项滚动

C# 在WPF列表视图中逐项滚动,c#,wpf,xaml,C#,Wpf,Xaml,我有一个高度很小的listview,但有3-4个listviewitems,占据了listview的整个大小(因此一次只能显示一个项目) 如果用户在上面滚动,listview不会一次滚动1个项目,而是一次滚动2个项目(单个滚动) 如何设置为1滚动=向下/向上滚动一项 希望我能说清楚,如果不是告诉我的话。我想你说的是鼠标滚轮 鼠标滚轮滚动实际上取决于IScrollInfo实现。我建议您在ScrollViewer之前自己处理鼠标滚轮事件。因此,基本上,您可以执行以下操作: 处理ListBox上的Pr

我有一个高度很小的listview,但有3-4个listviewitems,占据了listview的整个大小(因此一次只能显示一个项目)

如果用户在上面滚动,listview不会一次滚动1个项目,而是一次滚动2个项目(单个滚动)

如何设置为1滚动=向下/向上滚动一项


希望我能说清楚,如果不是告诉我的话。

我想你说的是鼠标滚轮

鼠标滚轮滚动实际上取决于
IScrollInfo
实现。我建议您在
ScrollViewer
之前自己处理鼠标滚轮事件。因此,基本上,您可以执行以下操作:

处理
ListBox上的
PreviewMouseWheel
事件

<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>

因此,您将鼠标滚轮滚动变成了向下/向上滚动。

如果您一次只想显示一个项目,那么为什么要显示列表视图?我猜您希望鼠标滚轮像单击滚动条向上/向下按钮一样滚动。
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;
}