教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 专业资料 >

Silverlight初学者的入门课程(4)

来源:网络收集 时间:2026-05-23
导读: 注意的重要代码是: MouseLeftButtonDown=border1_MouseLeftButtonDown MouseLeftButtonUp=border1_MouseLeftButtonUp MouseMove=border1_MouseMove 上面代码行定义了需要处理的 3 个事件。正如其名称所示,需要处

注意的重要代码是:
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字,全部文档内容请下载后查看。喜欢就下载吧 ……

Silverlight初学者的入门课程(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/269917.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)