当前位置:编程学习 > wap >>

Windows Phone中的路由事件-以ListBox控件为例

今天我们来介绍一下Windows Phone中的路由事件,以ListBox控件为例。

  首先我们来熟悉一下路由事件的概念。

  路由事件是具有更强传播能力的事件,他们可以在元素树中向上冒泡和向下隧道传播,并且沿着传播路径被事件处理程序处理。路由事件经常以冒泡路由事件和隧道路由事件的形式出现,冒泡路由事件是在元素树中向上传播的一种事件,触发事件的源会把事件传递给他的父元素,他的父元素又会将事件继续向上传递,直到传递到元素树的顶端,或者有着特殊的逻辑处理。稍后会给大家详细讲述冒泡路由事件的工作方式。隧道路由事件的工作方式和冒泡路由事件相同,但方向相反。他是在元素树中向下传播的一种事件,触发事件的源的会寻找他的子元素,然后把事件传递给他。隧道路由事件通常比较容易辨认,因为他们都以单词Preview开头。隧道路由事件总是在冒泡路由事件之前被触发。今天我们的重点是冒泡路由事件。

 \\


由于是讲Windows phone中的路由事件,那就要讲一下触摸屏设备所特有的事件--触摸事件。在Windows phone中 触摸事件主要有3种,比较简单,分别是ManipulationStarted事件,他是在用户的手指触摸到屏幕时触发的事件。ManipulationDelta事件,他是用户的手指在屏幕上滑动式触发的事件。ManipulationCompleted事件,他是用户的手指离开屏幕时触发的事件。值得注意的是,以上三种触摸事件都是冒泡路由事件。

\


 

好,下面让我们来结合程序详细介绍一下Windows phone中的路由事件。
  新建一个Windows Phone应用程序,在内容Grid中添加以下XAML代码。
 
 1 <ListBox  x:Name="listBox"
 2                       ManipulationStarted="listBox_ManipulationStarted"
 3                       ManipulationCompleted="listBox_ManipulationCompleted"
 4                       >
 5                 <ListBoxItem x:Name="listBoxItem1"
 6                     ManipulationStarted="listBoxItem1_ManipulationStarted" 
 7                     ManipulationCompleted="listBoxItem1_ManipulationCompleted">
 8                     <TextBlock x:Name="textBlock1" FontSize="30"
 9                                    Text="文本一文本一文本一"
10                                    ManipulationStarted="textBlock1_ManipulationStarted"
11                                    ManipulationCompleted ="textBlock1_ManipulationCompleted"/>
12                 </ListBoxItem>
13                 <ListBoxItem x:Name="listBoxItem2"
14                     ManipulationStarted="listBoxItem2_ManipulationStarted" 
15                     ManipulationCompleted="listBoxItem2_ManipulationCompleted">
16                     <TextBlock x:Name="textBlock2" FontSize="30"
17                                    Text="文本二文本二文本二"
18                                    ManipulationStarted="textBlock2_ManipulationStarted"
19                                    ManipulationCompleted="textBlock2_ManipulationCompleted"/>
20                 </ListBoxItem>
21             </ListBox>
 
  这段代码比较简单,包括一个listbox控件,和两个listboxitem,每个listboxitem的内容也比较简单,就是一行文本,我们给每个控件都分别注册了ManipulationStarted事件和ManipulationCompleted事件。
  这是完成后的手机界面:

 \


 

接下来,我们添加后台的事件处理程序,上代码。
  首先添加一个名字空间:
1 using System.Diagnostics;
  然后是事件处理程序的代码:
 1 private void listBox_ManipulationStarted(object sender, ManipulationStartedEventArgs e)
 2         {
 3             Debug.WriteLine("OUT PUT: listBox_ManipulationStarted in {0}", DateTime.Now.ToLongTimeString());
 4         }
 5
 6         private void listBox_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e)
 7         {
 8             Debug.WriteLine("OUT PUT: listBox_ManipulationCompleted in {0}", DateTime.Now.ToLongTimeString());
 9         }
10
11         private void listBoxItem1_ManipulationStarted(object sender, ManipulationStartedEventArgs e)
12         {
13             Debug.WriteLine("OUT PUT: listBoxItem1_ManipulationStarted in {0}", DateTime.Now.ToLongTimeString());
14         }
15
16         private void listBoxItem1_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e)
17         {
18             Deb

补充:移动开发 , Windows Phone ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,