Silverlight初学者的入门课程(4)
注意的重要代码是:
MouseLeftButtonDown="border1_MouseLeftButtonDown" MouseLeftButtonUp="border1_MouseLeftButtonUp" MouseMove="border1_MouseMove"
上面代码行定义了需要处理的 3 个事件。正如其名称所示,需要处理左鼠标按下事件、左 鼠标单击并放开事件和左鼠标移动事件。 在后置代码中, 当左鼠标按下, 将设置一个全局变量用来标识用户开始移动。 在鼠标移动时, 将设置一个鼠标当前位置并为 Border 控件设置新位置。当左鼠标释放时,将重设全局变 量以便不会移动更多的对象。 看后置代码:
public partial class Page : UserControl { // 全局变量用于定义用户是否点击边框和开始/停止移动 private bool moving = false; private double offSetX; private double offSetY; public Page() { InitializeComponent(); } private void border1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { // 鼠标左键编辑开始移动 moving = true; Point offset = e.GetPosition(border1);
~ 22 ~
程序员之家
offSetX = offset.X; offSetY = offset.Y; } private void border1_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { // 鼠标左键释放,停止移动 moving = false; } private void border1_MouseMove(object sender, MouseEventArgs e) { if(moving) { // 得到鼠标新的位置 Canvas parent = (Canvas)this.border1.Parent; Point p = e.GetPosition(parent); double x = p.X - offSetX; double y = p.Y - offSetY; // 设置边框控件的新位置 this.border1.SetValue(Canvas.LeftProperty, x); this.border1.SetValue(Canvas.TopProperty, y); } } }
第二十一章 如何从 页面传递参数到 Silverlight 控 件?
可以从 aspx 页面和 html 页面传递参数给 Silverlight 控件。 这章介绍如何从 aspx 页 面和后置代码文件中传递参数到 Silverlight。
InitParameters
在 Xaml 页面中用户控件有一个属性叫做 InitParameters。 可以从 Aspx 页面以键-值对 的形式设置值。这个属性可以接受键-值对,可以传递任意一组 string 值。
~ 23 ~
程序员之家
如何设置 InitParameters
示例 – 从 Aspx 页面设置 InitParameters 属性:
也可以从 Aspx 页面的后置代码文件设置这个属性。 示例 – 从后置代码文件设置 InitParameters 属性:
Xaml1.InitParameters = "City=Houston,State=Texas,Country=USA";
如何检索 InitParameters 的值呢?可以通过 InitParameters 属性传递给 Silverlight 控件的值可以从 App.xaml 页面的 Application_Startup 事件中检索。
private void Application_Startup(object sender, StartupEventArgs e) { IDictionar
y parameters = e.InitParams; this.RootVisual = new Page1(); }
现在,在大多数情况下,想传递值到 xaml 页面,而不是在 App.xaml 做任何事情。
从 App.xaml 传递参数到其他页面
从 App.xaml 页
资料,教程,编程,文集
面传递参数到其他页面,需要修改 xaml 页面类的构造方法来接收参数。
private IDictionary parameters = null; public Page1() { InitializeComponent(); } public Page1(IDictionary p) { this.parameters = p; InitializeComponent(); }
上面示例显示一个附加的构造反复添加了类型为 IDictionary 的参数并为成员设置值。 现在回到 App.xaml 传递参数给页面:
private void Application_Startup(object sender, StartupEventArgs e) { IDictionary parameters = e.InitParams;
~ 24 ~
程序员之家
this.RootVisual = new Page1(parameters); }
在 XAML 页面使用 IDictionary 参数
如果你按上述步骤设置正确,你将可以在 XAML 页面访问 IDictionary 的值。
textblock1.Text = this.parameters["City"];
XAML 页面完整代码
<Grid x:Name="LayoutRoot" Background="White"> <TextBlock x:Name="textblock1" Width="200" Height="30"></TextBlock> </Grid>
在 page1.xaml 的后置代码文件中,可以为 textblock1 控件设置文本,如下显示:
private void UserControl_Loaded(object sender, RoutedEventArgs e) { textblock1.Text = parameters["City"]; }
最终在页面上将会显示“Houston”即“City”参数的值。
第二十二章 如何从 Silverlight 控件调用 WCF 方法?
Silverlight 控件在客户端浏览器上执行。它不能直接访问服务器端的数据。因此,如果 Silverlight 控件需要从服务器上的数据库或其他数据源获取数据, 必须使用像调用 WCF 或依赖 Silverlight 控件的 InitParameters 属性等途径。 建议使用调用 WCF 方法的方式获取服务器端的数据到 Silverlight 控件。最重要的好处 是类型安全。 下面示例演示 Silverlight 控件在客户端如何使用 WCF 从服务器端获取数据。 在这个例子中, 将创建一个 Silverlight 项目和一个承载 Silverlight 控件的其他 Web 项目。此外,将在 Web 项目中添加 WCF 服务。
~ 25 ~
程序员之家
Silverlight 中使用 WCF
创建一个新的 Silverlight 项目和具有承载 Silverlight 控件 Web 项目。 打开 Visual Studio 并选择菜单“文件”-> “新建”-> “项目” 在你喜欢的语言下面选择项目类型为 “Silverlight” 并选择 “Silverlight 应用程序” 模板。这里我们选择的是 Visual C#。 为项目命名为“MySilverlightApp”并选择“为解决方案创建目录”选项因此所有项目 文件多在文件夹结构中。
在下一个对话框中,选择“为解决方案添加一个承载控件的 Web”
右键解决方案资源管理器中的 Web
项目并选择“添加新项” 。 从对话框左边面板选择“Silverlight”类别。
~ 26 ~
程序员之家
从右边面板,选择“Silverlight-enabled WCF 服务”模板。 选择默认名字“Service1.svc”并
资料,教程,编程,文集
按“添加”按钮。 可以看到如下代码:
[ServiceContract(Namespace = "")] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class Service1 { [OperationContract] public void DoWork() { // 在此处添加操作实现 return; } // 在此处添加更多操作并使用 [OperationContract] 标记它们 }
在这里不解释 WCF 的概念。不过想指出两件事情:
[ServiceContract(Namespace = "")]
- 类名前面的这个特性表明这个类是一个 WCF 访问。
[OperationContract]
- 方法前面的这个特性表明这个方法可以从 WCF 客户端调用。
第二十三章 Silverlight 中使用 WCF 示例
为 WCF 服务类添加一个新方法,使用[OperationContract]特性来修饰。如下添加一个 方法:
[OperationContract] public string GetName() { return "John"; }
正如你看见的,这是一个简单的方法返回一个硬编码的名字。 打开解决方案管理器。右键“Service1.svc”文件
…… 此处隐藏:4220字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [专业资料]《蜜蜂之家》教学反思
- [专业资料]过去分词作定语和表语1
- [专业资料]苏州工业园区住房公积金贷款申请表
- [专业资料]保安管理制度及处罚条例细则
- [专业资料]2018年中国工程咨询市场发展现状调研及
- [专业资料]2015年电大本科《学前教育科研方法》期
- [专业资料]数字信号处理实验 matlab版 离散傅里叶
- [专业资料]“十三五”重点项目-虎杖白藜芦醇及功
- [专业资料]2015-2020年中国竹木工艺市场需求及投
- [专业资料]国际贸易理论与实务作业五:理论案例分
- [专业资料]财政部修订发布事业单位会计制度
- [专业资料]BCA蛋白浓度测定试剂盒(增强型)
- [专业资料]工程进度总计划横道图模板(通用版)
- [专业资料]七年级地理同步练习(天气与气候)
- [专业资料]X光安检机介绍火灾自动报警系统的组成
- [专业资料]衢州市人民政府办公室关于印发衢州市区
- [专业资料]经济全球化及其影响[1]
- [专业资料]质粒DNA限制性酶切图谱分析
- [专业资料]国家安全人民防线工作“六项”制度
- [专业资料]劳动力投入计划及保证措施
- 电子账册联网监管培训手册
- 人教版语文七年级上第1课《在山的那边
- 对我区担保行业发展现状的思考与建议
- 平面四边形网格自动生成方法研究
- 2016年党课学习心得体会范文
- 如何设置电脑定时关机
- 全球最美人妖排行榜新鲜出炉
- 社会实践调查报告及问卷
- Visual Basic习题集
- 《鱼我所欲也》课件2
- 浙江省会计从业资格考试试卷
- 全遥控数字音量控制的D 类功率放大器资
- 鞍钢宪法与后福特主义
- 电表的改装与校准实验报告(1)
- 2014年高考理科数学真题解析分类汇编:
- Windows 7 AIK 的使用
- 风电场全场停电事故应急处置方案
- 化工原理选填题题库(下)
- 关于产学研合作教育模式的学习与思考
- 西安先锋公馆项目前期定位报告




