我有一些問題試圖找出如何滾動包含在滾動查看器內的網格的內容。當嘗試使用鼠標滾輪或平移鍵盤(使用觸摸屏)進行滾動時,如果鼠標/觸摸點位於空白區域上,網格滾動會很好,但如果它位於特定控件(例如組框)上方,滾動。是否有一些屬性我錯過了允許子面板允許他們滾動父容器?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