点击gridview项目应将其滚动到左上角的窗口8

时间:2014-05-18 23:25:58

标签: c# gridview windows-8 scrollviewer

我的情况是我有以下结构

<GridView ScrollViewer.HorizontalScrollMode="Enabled" >
     <Grid>
       <Gridview>
       ...
       </GridView>
    </Grid>

    <Grid>
      <Gridview>
       ...
      </GridView>
    </Grid>
      .
      .
      .
 </GridView

现在我需要的是任何CHILD网格视图的selectionchange事件,它应该将父网格滚动到右上方,以便轻敲项目的gridview将显示在第一个位置。 喜欢以下图片 enter image description here

我正在尝试使用

 var scrollViewer1 = GVmain.GetFirstDescendantOfType<ScrollViewer>();
 scrollViewer1.ScrollToHorizontalOffsetWithAnimation(moveGridView);

经过如此多的点击和试验后,我无法想出任何会设置“moveGridView”值的公式,以便它可以根据需要将gridview向左滚动。

1 个答案:

答案 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()方法应该表现更好,并且还支持动画。