Windows Phone 8.1开发:如何从ListView中,获取ScrollViewer对象

在使用ListView作为信心呈现载体开发应用程序时,我们经常需要通过监视滚动条(ScrollViewer)的位置状态来完成一些交互逻辑。最直接的体现就是 延时加载,(上滑加载更多,下拉获取更新数据)。  

我们可以通过 scrollViewer的ViewChanged事件,来完成这些逻辑。

那么问题来了。(- -!不是说挖掘机……..)

如何从ListView中,获取ScrollViewer对象?

1.我们可以通过这样一个方法来 获取ListView下的ScrollViewer对象。  方法定义如下。

//这个方法可以获取ListView下的ScrollViewer对象。

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;
          }
      }

2.//在listview的loaded事件中,调用FindVisualChildByName<T>方法,获取ScrollView对象。

private void listview1_Loaded(object sender, RoutedEventArgs e)
{

//调用FindVisualChildByName<T>方法,获取ScrollView对象。
    ScrollViewer scrollViewer = FindVisualChildByName<ScrollViewer>(listview1, "ScrollViewer");

//给这个scrollViewer加事件。
    scrollViewer.ViewChanged += scrollViewer_ViewChanged;
}

posted @ 2014-11-27 00:07  大黑兔  阅读(392)  评论(0编辑  收藏  举报