启用WPF DataGrid平移?

时间:2015-04-01 19:36:37

标签: wpf wpf-controls wpfdatagrid

我有一个WPF DataGrid,我允许在需要时垂直扩展,因此不需要在DataGrid本身内滚动或平移内容。但是,它位于具有ScrollViewer的Window内部。

当我运行它时,DataGrid垂直增长以允许所有行按预期方式,并且沿着窗口边缘的ScrollBar按预期显示。但是,如果我在位于DataGrid本身之外的Window区域进行操作,我只能上下触摸/平移。 DataGrid接受并有效地阻止输入(这不是意料之外的。)

那么如何让DataGrid"传递"这个触摸/平移向上输入它的容器,即窗口,以便窗口知道它需要滚动?

2 个答案:

答案 0 :(得分:0)

我可能在这里错了,但我认为WPF中的可视化树向上冒泡。这意味着你正在解释它的DataGrid将捕获事件并按照你提到的正确处理它。

但是一旦完成,它就会冒泡到它的父窗口(窗口),因此不会将事件传递给你的滚动查看器。这样做是因为scrollviewer中的datagrid可能是兄弟姐妹而不是父/子关系。

一种选择是设置命令来处理此行为。 或者你可以使用调度员:

this.Dispatcher.Invoke( () => 
           control.ScrollToVerticalOffset(scrollViewerChannelBtns.VerticalOffset + 50);

答案 1 :(得分:0)

在xaml

ScrollViewer.PanningMode="Both"