我有一些问题试图找出如何滚动包含在滚动查看器内的网格的内容。当尝试使用鼠标滚轮或平移键盘(使用触摸屏)进行滚动时,如果鼠标/触摸点位于空白区域上,网格滚动会很好,但如果它位于特定控件(例如组框)上方,滚动。是否有一些属性我错过了允许子面板允许他们滚动父容器?WPF通过子容器滚动父容器
编辑: 我错误地说我的原始布局。这里是我的塞纳里奥的简化版本:
<Grid>
<ScrollViewer Name="MainScrollViewer">
<StackPanel>
<ListBox /> <--Doesn't Scroll-->
<Button /> <--Scrolls Fine-->
<TextBlock /> <--Scrolls Fine-->
<TextBox /> <--Scrolls Fine-->
<DataGrid /> <--Doesn't Scroll-->
</StackPanel>
</ScrollViewer>
</Grid>
的同事,指出我的问题是由于这样的事实,如列表框和DataGrid中的控件包含ScrollViewers自己,这是有道理的。他的建议(这将起作用,但我们双方都同意似乎比应该更复杂)是在后面的代码中捕捉并重新抛出滚动事件(并且可能必须处理计算滚动的偏移量),以便它可以冒泡到“MainScrollViewer”。
编辑2: 这似乎是实现这一目标的唯一方法是使用后面的代码来处理父代中的PreviewMouseWheel事件。这是有效的,但我该如何去执行相同的平移操作(通过手指在触摸屏上滚动)?
你知道网格包含它是一个'ScrollViewer'吗?没有必要把它放在ScrollViewer中。 。 。如果您安装了VS2013,您可以在C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Blend \ SystemThemes \ Wpf – 2014-09-04 20:20:08
中找到VS中随附的每个控件都使用的模板当您说'grid'时,你指的是“Grid”面板还是数据网格控件? – 2014-09-04 20:21:05
此外,如果控件的“背景”是“透明”,则命中测试失败。将“背景”更改为其他颜色和测试。 – 2014-09-04 20:21:24