在使用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;
}

Windows Phone 8.1开发:如何从ListView中,获取ScrollViewer对象的更多相关文章

  1. 小程序开发之改变data中数组或对象的某一属性值

    前言:在小程序的开发中,我们在view中便利data中数组或对象时,很多情况下需要在js中动态改变数组或者对象中某一香的属性值. 效果图: 我给大家总结了案例如下:   wxml如下: <scr ...

  2. Android开发UI之ListView中的Button点击设置

    在ListView的Item中,如果有Button控件,那么要实现Button和Item点击都有响应,可以将Item的Layout中Button的focusable属性设为false,然后设置layo ...

  3. Android开发之关于ListView中adapter调用notifyDataSetChanged无效的原因

    1.数据源没有更新,调用notifyDataSetChanged无效. 2.数据源更新了,但是它指向新的引用,调用notifyDataSetChanged无效. 3.数据源更新了,但是adpter没有 ...

  4. Windows Phone 8.1开发:如何让ListView下拉加载更多?

    Windows Phone 8.1开发中使用ListView作为数据呈现载体时,经常需要一个下拉(拇指向上滑动)加载更多的交互操作.如何完成这一操作呢?下面为您阐述. 思路是这样的: 1.在ListV ...

  5. ListView中的组件Button的OnClick事件触发时机

    Android开发时,ListView中的组件Button的OnClick事件必须在ListView之外的组件事件触发后才能触发? 此处ListView无OnItemClick事件,而且ListVie ...

  6. Windows Phone 8.1开发:如何让ListView滚动到顶部,回到第一条?

    Windows Phone 8.1开发中,ListView向下滑动了半天,用户如果突然想回头看看第一条数据怎么办? 如何让listView滚动到顶部,回到第一条? 很简单,一行代码.调用ListVie ...

  7. Windows Store App JavaScript 开发:WinJS库控件

    在介绍了如何使用标准的HTML控件以及WinJS库中提供的新控件之后,下面来着重介绍WinJS库中几种常用的控件. (1)ListView控件 在开发Windows应用商店应用时可以使用ListVie ...

  8. Windows Phone 8.1 开发技术概览 (Universal APP)

    前一阵真的比较懒 WP8.1 已经出来这么长时间了现在才更新BLOG让大家久等了,今天我先为大家介绍下 WP 8.1的开发框架,什么是微软所推崇的 Universal APP,以及我们要开发 Univ ...

  9. 《深入浅出Windows 10通用应用开发》

        <深入浅出Windows 10通用应用开发>采用Windows 10的SDK进行重新改版,整合了<深入浅出Windows Phone 8.1应用开发>和<深入解析 ...

随机推荐

  1. 基础知识 - Golang 中的正则表达式

    ------------------------------------------------------------ Golang中的正则表达式 ------------------------- ...

  2. PHP Fuzzing行动——源码审计

    目录: Section 1: 20种PHP源码快速审计方式  Section 2: PHP源码审计自动化( PHP Fuzzer )  风险级别: ■ Low ■ Medium ■ High   在开 ...

  3. 自定义 404 与 500 错误页面,URL 地址不会重定向(二)

    上一篇是使用了全局过虑器来实现,还可以使用 HttpApplication 来处理. 参考文章: http://www.cnblogs.com/dudu/p/aspnet_custom_error.h ...

  4. Hadoop学习笔记(2) ——解读Hello World

    Hadoop学习笔记(2) ——解读Hello World 上一章中,我们把hadoop下载.安装.运行起来,最后还执行了一个Hello world程序,看到了结果.现在我们就来解读一下这个Hello ...

  5. IOS缓存之NSCache缓存

    NSCache:专门做缓存的类 NSCache简介:NSCache是苹果官方提供的缓存类,用法与NSMutableDictionary的用法很相似,在AFNetworking和SDWebImage中, ...

  6. web前端开发(4)

    低权重原则,避免滥用子选择器 CSS选择符是有权重的,当不同选择符的样式设置有冲突时会采用权重高的选择符设置的样式. html标签权重是1,class权重是10,id权重是100 如果css选择符权重 ...

  7. String类的方法2

    ---恢复内容开始--- .ToLower()    //转为小写字符串"AbC"-->"abc" .ToUpper()    //转为大写"A ...

  8. Linux命令之cut

    cut:文件的每一行剪切字节.字符和字段并将这些字节.字符和字段写至标准输出.如果不指定 File 参数,cut 命令将读取标准输入.必须指定 -b.-c 或 -f 标志之一. 主要参数: -b(by ...

  9. dfa最小化,终于完成了。

    采取的方法是hopcroft的填表法,详情见如下代码 #include "nfa_to_dfa.h" int* dfa_diff_matrix; int mini_dfa_numb ...

  10. linux /etc/sysctl.conf 禁止别人ping自己

    vi /etc/sysctl.conf如果希望屏蔽别人 ping 你的主机,则加入以下代码:# Disable ping requestsnet.ipv4.icmp_echo_ignore_all = ...