在Silverlight中开发一个自定义控件.doc_第1页
在Silverlight中开发一个自定义控件.doc_第2页
在Silverlight中开发一个自定义控件.doc_第3页
在Silverlight中开发一个自定义控件.doc_第4页
在Silverlight中开发一个自定义控件.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

在Silverlight 中开发一个自定义控件引用:本文主要讲述如何在Silverlight2中开发一个自定义控件,我使用环境是VS2008 Silverlight2 Beta2。一:创建Silverlight2 类库项目,如下图:然后我们添加一个控件类,该可以继承自Control类,也可以继承自其他类比如ContentControl,ItemControl。我们继承自ContentControl,代码如下: 复制内容到剪贴板 代码:using System;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Ink;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;namespace CarySLCustomControlLib public class CarySLCustomControl : ContentControl 其实现在已经做好了一个最简单的自定义控件,我们给给他一个控件模板就可以了。在Page.xaml的Grid中添加如下代码: 复制内容到剪贴板 代码: 效果如下图:二:创建控件模板下面我们为控件提供一个默认的控件模板,像类库项目中添加添加Generic.xaml文件,代码如下: 复制内容到剪贴板 代码:ResourceDictionary xmlns=/winfx/2006/xaml/presentationxmlns:x=/winfx/2006/xamlxmlns:custom=clr-namespace:CarySLCustomControlLib;assembly=CarySLCustomControlLib 向我们的控件类CarySLCustomControl的构造函数中添加如下代码: 复制内容到剪贴板 代码:this.DefaultStyleKey = typeof(CarySLCustomControl);在Page.xaml中我们只需要引用控件,就可以达到上面一样的效果了。三:模板绑定我们在使用控件的时候都会做响应的属性设定,比如: 复制内容到剪贴板 代码:但是你现在做该设置是不会生效的,还仍然使用控件模板的设定,我们可以在控件模板中通过使用 TemplateBinding ControlProperty 的标识扩展句法来绑定到控件的属性来实现,使用ContentPresenter控件可以灵活的设置各个属性。修改后的Generic.xaml的代码如下: 复制内容到剪贴板 代码:ResourceDictionaryxmlns=/winfx/2006/xaml/presentationxmlns:x=/winfx/2006/xamlxmlns:custom=clr-namespace:CarySLCustomControlLib;assembly=CarySLCustomControlLib Page.xaml中更改控件的属性如下: 复制内容到剪贴板 代码: 效果如下图:四:添加一个单击事件WPF中支持向下和向下的事件路由,路由事件的路由可有效地向上遍历或向下遍历树,这要取决于该事件是隧道路由事件还是冒泡路由事件,而Silverlight中的路由事件只支持冒泡路由策略。下面我们为该控件添加一个单击事件,代码如下: 复制内容到剪贴板 代码:public class CarySLCustomControl : ContentControl public event RoutedEventHandler Click; public CarySLCustomControl() this.DefaultStyleKey = typeof(CarySLCustomControl); this.MouseLeftButtonUp += new MouseButtonEventHandler(CarySLCustomControl_MouseLeftButtonUp); void CarySLCustomControl_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) if (Click != null) Click(this, new RoutedEventArgs(); 现在我们就可以使用控件的单击事件了,Page.xaml中如下: 复制内容到剪贴板 代码:Page.xaml.cs中编写事件处理程序如下:void CarySLCustomControl_Click(Object sender, RoutedEventArgs e) System.Windows.Browser.HtmlPage.Window.Alert(Click!);运行后如下图:五:可视化状态在Silverlight中微软引入一种新的模式来处理事件和用户进行交互,例如当鼠标经过控件时。控件可以从一种状态转换到另一种状态,我们下面就已从normal 状态到 pressed 状态来进行简单的说明。我们使用Silverlight中的Visual State Manager (VSM)来简化对可视化状态和可视化状态转换之间的处理。使用VisualState对象来定义不同的状态,VisualTransition对象定义状态间的转换。使用VisualStateManager类的静态方法GoToState来控制状态的装换。修改完成后的generic.xaml中的代码如下: 复制内容到剪贴板 代码: 在控件类CarySLCustomControl中添加如下代码: 复制内容到剪贴板 代码:public CarySLCustomControl() this.MouseEnter += new MouseEventHandler(CarySLCustomControl_MouseEnter); this.MouseLeave += new MouseEventHandler(CarySLCustomControl_MouseLeave);void CarySLCustomControl_MouseEnter(object sender, MouseEventArgs e) VisualStateManager.GoToState(this, MouseOv

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论