我有一个列表视图,它的高度非常小,但有3-4个listviewitems,它占用了Listview的整个大小(所以一次只能显示一个项目)
如果用户滚动它,列表视图一次不滚动1个项目,它一次滚动2个项目(单个滚动)
你如何设置它以便滚动=一个项目向下/向上?
希望我明白这一点,如果不是只是告诉我。
答案 0 :(得分:3)
我假设你在这里谈论MouseWheel滚动。
MouseWheel 滚动实际上取决于IScrollInfo
实现。我建议你在ScrollViewer
之前自己处理 MouseWheel 事件。所以基本上,你可以做以下事情:
处理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>
在后面的代码中,向下或向上滚动时触发ScrollBar.LineDownCommand
或ScrollBar.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;
}
因此,您将 MouseWheel 滚动到 LineDown / LineUp 。