none
Windows Phone 8.1应用,如何获得一个 ListView下的ScrollView 对象? RRS feed

  • 问题

  • 刚刚在论坛里找到了一个关于ListView滑动加载的例子。要获取listview下的ScrollView对象。

    但是我尝试了一下,FindVisualChildByName这个方法在windows phone 8.1 中找不到定义。

    希望前辈们给些指点。

    //我想用FindVisualChildByName,但是wp8.1里头没有。。。

    ScrollViewer scrollviewer = FindVisualChildByName<ScrollViewer>(listview, "ScrollViewer"); ScrollBar verticalScrollBar = FindVisualChildByName<ScrollBar>(scrollviewer, "VerticalScrollBar");

    2014年9月25日 15:08

答案

  • 这个方法不是系统提供的,是要自己去实现的。代码如下:

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



    2014年9月26日 7:24

全部回复

  • 这个方法不是系统提供的,是要自己去实现的。代码如下:

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



    2014年9月26日 7:24
  •  感谢~ 太谢谢了。。。

    2014年9月27日 12:55