C# 点击gridviewitem应将其滚动至windows 8的左上角
我的情况是,我有以下结构C# 点击gridviewitem应将其滚动至windows 8的左上角,c#,gridview,windows-8,scrollviewer,C#,Gridview,Windows 8,Scrollviewer,我的情况是,我有以下结构 <GridView ScrollViewer.HorizontalScrollMode="Enabled" > <Grid> <Gridview> ... </GridView> </Grid> <Grid> <Gridview> ... </GridView>
<GridView ScrollViewer.HorizontalScrollMode="Enabled" >
<Grid>
<Gridview>
...
</GridView>
</Grid>
<Grid>
<Gridview>
...
</GridView>
</Grid>
.
.
.
</GridView
...
...
.
.
.
如果您的主GV未虚拟化,那么所有子GV都在可视化树中,因此如果您使用我的工具包,您可以检查子GV相对于主GV的位置,如下所示:
var pos = childGV.GetPosition(relativeTo: GVmain);
var scrollViewer1 = GVmain.GetFirstDescendantOfType<ScrollViewer>();
scrollViewer1.ScrollToHorizontalOffsetWithAnimation(pos.X);
var pos=childGV.GetPosition(relativeTo:GVmain);
var scrollViewer1=GVmain.getFirstDegenantofType();
scrollViewer1.滚动到带动画的水平偏移网络(位置X);
注意,如果您的目标是Windows 8.1-您应该避免使用ScrollToHorizontaloffetWithAnimation()
,因为内置的ChangeView()
方法应该性能更好,并且还支持动画。嘿,Filip,我尝试过这个,但总是需要gridview滚动到最后,似乎有必要将位置X除以一些数字,因为它给出了非常大的值。你知道吗?我正在使用childGV.GetPosition()并将其除以一列的总宽度(包括边距),它显示出奇怪的行为:当我第一次单击一列时,它不会向左滚动,但它的滚动条的宽度会变小,当我第二次单击它时,同样的事情发生了,它的滚动条的宽度越来越小,现在在第三次它确实滚动到左边,因为我想。
var pos = childGV.GetPosition(relativeTo: GVmain);
var scrollViewer1 = GVmain.GetFirstDescendantOfType<ScrollViewer>();
scrollViewer1.ScrollToHorizontalOffsetWithAnimation(pos.X);