开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Windows Phone 7 不温不火学习之《创建用户控件》

简介:
+关注继续查看

同样出自微软的产品,像ASP.NET 一样,Windows Phone 7 也有一个叫UserControl 的东西。这个相当于一个组件,类似于Android 继承View 。

  本篇将实现一个用户控件,默认为它添加高宽,并为它添加一个自己的事件,通过本篇学习,你可以学习到如何编写一个Windows Phone 7用户控件,如何为它添加属性,如何为我们自己的用户控件添加事件处理。

  实现的DEMO运行效果如下 :

  

当你点击文本后,可以执行一些你要的操作,例如关闭该对话框。

 

  实现我们自己的用户控件,第一步先添加一个用户控件模板:


 

创建完成后,可以看到设计图并不是我们熟悉的Windows Phone 7手机的样子,还是一块画板展现在上面。在画板上我们添加一个Popup面板,在面板里面添加一个图片和一个文本,如下代码:

 <Popup x:Name="WaitingWnd">
        
<Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}">
            
<Image Height="88" HorizontalAlignment="Center" Margin="172,137,218,0" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="90" />
            
<TextBlock Height="30" HorizontalAlignment="Left" Margin="172,231,0,0" Name="textBlock1" Text="等待中..." VerticalAlignment="Top" Width="92" />
        
</Grid>
    
</Popup> 

 

 

  到了这里,我们就可以开始编写后台代码了,首先要记的是,如果我们没有给我们的用户控件设置默认高和宽的话,开始拖进来的时候会很小,所以这里我们为他做两个默认的高宽,并且添加一个属性可以供控件用户控件图片的轮换速度,代码如下:

 public double Speed { getset; }
        
private int width; private int height;
        
public int Control_Width { get { return 100; } set { width = value; } }
        
public int Control_Height { get { return 100; } set { height = value; } }

 

 

 

使用线程,为用户控件作转动效果:

  public loading()
        {
            InitializeComponent();
            
this.Width = Control_Width;
            
this.Height = Control_Height;

            timer 
= new DispatcherTimer();
            timer.Interval 
= TimeSpan.FromMilliseconds(Speed);
            timer.Tick 
+= new EventHandler(timer_Tick);
            textBlock1.MouseLeftButtonDown 
+= new MouseButtonEventHandler(textBlock1_MouseLeftButtonDown);
        }
        
void timer_Tick(object sender, EventArgs e)
        {
            
this.image1.Source = new BitmapImage(new Uri("Assets/loading00" + Count + ".png", UriKind.Relative));
            
            Count 
= (Count == 8 ? 1 : Count + 1);
        }

 

并且,需要抛出两个方法,可在外面调用控制用户控件的行为:

 public void begin() 
        {
            timer.Start();
            WaitingWnd.IsOpen 
= true;
        }

        
public void end()
        {
            timer.Stop();
            WaitingWnd.IsOpen 
= false;
        }

 

其实到这里这个控件己经是可以运行的了,那么如何为我们自己的用户控件添加一个自己的事件呢?

  这里运用Android 的一些小知识点,在Andorid 为自己的VIEW添加事件(那里叫接口)是实现一个自己的接口,而Windows Phone 7必须声明一个叫event 的RoutedEventHandler 事件,然后实现一个需要有行为的控件,为RoutedEventHandler 做委托,如下代码 ,我们实现了文本框的点击事件,让它可以触发我们自己的事件功能:

 public event RoutedEventHandler clickHandler;
        
void textBlock1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            clickHandler.Invoke(sender, e);
        }

 

 

按照上面的操作,我们就可以在任何地方使用这个控件的事件了,如本DEMO中的mainpage.cs下面的代码:

 // Constructor
        public MainPage()
        {
            InitializeComponent();
            
this.loading1.begin();
            loading1.clickHandler 
+= new RoutedEventHandler(loading1_clickHandler);
        }

        
void loading1_clickHandler(object sender, RoutedEventArgs e)
        {
            
this.loading1.end();
        }

 

另外要提的是,创建好的用户控件系统会默认让在IDE用户控件列表里面,如下图:

 

源码下载 :用户控件






 本文转自 terry_龙 51CTO博客,原文链接:http://blog.51cto.com/terryblog/485231,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Windows Phone 寿终正寝了,这些经典机型你还记得吗?
不久前,随着最后一家WP手机厂商惠普宣布取消今后Windows Phone的研发计划,以及微软官方声明对WP8.1系统今后所有升级维护的终止,WP手机,作为曾经和安卓手机、苹果手机并驾齐驱的三大智能手机之一,正式寿终正寝。
0 0
Windows Phone快速入门需掌握哪些能力
在此之前,先普及下Windows Phone的概念和开发工具的介绍。 Windows Phone是微软公司开发的手机操作系统,它将微软旗下的Xbox Live游戏、Xbox Music音乐与独特的视频体验集成至手机中。2012年6月21日,微软正式发布Windows Phone 8,采用和Windows 8相同的Windows NT内核,同时也针对市场的Windows Phone 7.5发布Windows Phone 7.8。
0 0
Windows Phone 下开发 LBS 应用
基于位置的服务(Location Based Service,LBS),它是通过电信移动运营商的无线电通讯网络(如GSM网、CDMA网)或外部定位方式(如GPS)获取移动终端用户的位置信息(地理坐标,或大地坐标),在GIS(Geographic Information System,地理信息系统)平台的支持下,为用户提供相应服务的一种增值业务。
0 0
Windows Phone 8.1 新功能汇总 开发者预览版开放下载
在Build 2014大会上,微软正式发布了传闻已久的Windows Phone 8.1系统,所有的Windows Phone 8手机都可以升级,微软这次可谓是十分厚道。虽然并非迭代升级,但WP 8.1还是拥有很多重大更新,对于微软进一步完善移动平台拥有积极的意义。下面,就一起来了解一下WP 8.1的主要新特性。
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
ECS运维指南之Windows系统诊断
立即下载
TAKING WINDOWS 10 KERNEL
立即下载
《云服务器运维之Windows篇》
立即下载