我的情况是我有以下结构
<GridView ScrollViewer.HorizontalScrollMode="Enabled" >
<Grid>
<Gridview>
...
</GridView>
</Grid>
<Grid>
<Gridview>
...
</GridView>
</Grid>
.
.
.
</GridView
现在我需要的是任何CHILD网格视图的selectionchange事件,它应该将父网格滚动到右上方,以便轻敲项目的gridview将显示在第一个位置。
喜欢以下图片
我正在尝试使用
var scrollViewer1 = GVmain.GetFirstDescendantOfType<ScrollViewer>();
scrollViewer1.ScrollToHorizontalOffsetWithAnimation(moveGridView);
经过如此多的点击和试验后,我无法想出任何会设置“moveGridView”值的公式,以便它可以根据需要将gridview向左滚动。
答案 0 :(得分:0)
如果您的主要GV没有虚拟化,那么所有儿童GV都在可视化树中,因此如果使用我的工具包,您可以检查儿童GV相对于主要GV的位置,如下所示:
var pos = childGV.GetPosition(relativeTo: GVmain);
var scrollViewer1 = GVmain.GetFirstDescendantOfType<ScrollViewer>();
scrollViewer1.ScrollToHorizontalOffsetWithAnimation(pos.X);
注意,如果您的目标是Windows 8.1,则应避免使用ScrollToHorizontalOffsetWithAnimation()
,因为内置的ChangeView()
方法应该表现更好,并且还支持动画。