none
windows 8 中的GridView,当拖动到顶端或者底端时,再往上(往下)拖动,如何能够知道这个拖动的偏移量(HorizontalCompression)呢? RRS feed

  • 问题

  • windows 8 中的GridView,当拖动到顶端或者底端时,再往上(往下)拖动,如何能够知道这个拖动的偏移量(HorizontalCompression)呢?
    2012年12月4日 6:40

答案

  • Hi,

    你可以通过VisualTreeHelper拿到GridView模板中的ScrollViewer,之后通过ScrollViewer中的HorizontalOffset拿到现在滚动条所在的位置,拿ScrollViewer的代码:

     public static T FindVisualChildByName<T>(DependencyObject parent, string name) where T : DependencyObject
            {
                for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
                {
                    var child = VisualTreeHelper.GetChild(parent, i);
                    string controlName = child.GetValue(Control.NameProperty) as string;
                    if (controlName == name)
                    {
                        return child as T;
                    }
                    else
                    {
                        T result = FindVisualChildByName<T>(child, name);
                        if (result != null)
                            return result;
                    }
                }
                return null;
            }

    使用的时候:

    ScrollViewer sv = FindVisualChildByName<ScrollViewer>(this.gv, "ScrollViewer");

    就可以拿到ScrollViewer,偏移量通过HorizontalOffset可以计算出来。

    Aaron
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.


    2012年12月6日 10:12
    版主