我有一个网格,其中的内容被添加到listview中。我添加了另一个网格,它是listview上的叠加。我需要滚动底层网格中的项目。
<Grid>
<ListView>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
</ListView>
<Grid Background="Transparent" ManipulationDelta="Grid_ManipulationDelta" ManipulationMode="All"/>
</Grid>
答案 0 :(得分:0)
您可以捕获鼠标事件(或更好的PreviewMouseWheel
事件)并明确地为列表视图重新提升它:
<Grid>
<ListView x:Name="listview1">
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
<TextBlock Text="CONTENT"/>
</ListView>
<Grid Background="Transparent" PreviewMouseWheel="Grid_PreviewMouseWheel"/>
</Grid>
转发活动的代码:
private void Grid_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
if (!e.Handled)
{
Decorator border = VisualTreeHelper.GetChild(listview1, 0) as Decorator;
ScrollViewer sv = border.Child as ScrollViewer;
var arg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta) { RoutedEvent = UIElement.MouseWheelEvent, Source = sender };
sv.RaiseEvent(arg);
}
}
注意我刚刚使用我找到的第一种方式来到ScrollViewer
内的ListView
,可能会有更好/更多的保存/ ......方法。
如果您不再需要重叠式鼠标滚轮事件,请选择标记e.Handled = true;
。