Silverlight支持Javascript API编程模型和托管API编程模型这两种编程模型,它们的基本作用都是用于XAML界面文件中的XAML对象,基于托管API编程的XAML应用程序是通过x:Class将XAML界面与界面的托管代码文件联系起来的,托管代码文件一般情况下是这个XAML界面文件同名的类文件,这种方式类似于asp.net的ASPX和托管代码文件的关系。

托管 API 提供比 JavaScript API 多很多的功能,在大多数 Silverlight 文档中都会涉及它。使用托管 API 的应用程序可以访问 .NET Framework 的轻量级版本,而 JavaScript API 只能访问 Silverlight 表示核心和浏览器 JavaScript 引擎。

JavaScript API 是 Silverlight 版本 1.0 中可用的模型,为向后兼容而保留,以支持一些特殊情况。

在 JavaScript API 中,Silverlight 插件加载单个 XAML 页而非应用程序包。此 XAML 可包括对服务器端资源(如图像和视频)的 URI 引用。Silverlight 插件使用 XAML 创建一个对象树,您可以通过在宿主 HTML 页中使用 JavaScript 以编程方式来操作该对象树。

JavaScript API 不提供能支持具有内部导航功能的复杂应用程序的应用程序模型。但是,它支持一些使用托管 API 不方便的情况,如初始屏幕。您还可以通过将新的 XAML 页加载到 Silverlight 插件或将新的网页加载到浏览器来实现基本导航功能。

托管 API可以使用 XAML 标记在托管 API 和 JavaScript API 中封装您的用户界面 (UI) 设计。使用托管 API 时,可以将应用程序代码分布到多个 XAML 文件和伴随的代码隐藏文件。

托管API编程模型可将已编译的代码运行在silverlight公共语言运行时或动态语言运行时上面,采用C#、VB、IronPython、IronRuby等语言的进行程序设计。

<Grid x:Name="LayoutRoot" Background="White">

<Canvas Background="White">

<TextBox x:Name="tbInput"  Width="605" Height="50" Canvas.Top="28" Canvas.Left="30" FontSize="30" Text="4"/>

<Button x:Name="btn1" Click="btn1_Click" Width="120" Height="50" Canvas.Left="60" Canvas.Top="102" FontSize="20" Content="请点击"/>

</Canvas>

</Grid> 

.cs文件代码如下,点击事件后通过C#托管代码设置属性

private void btn1_Click(object sender, RoutedEventArgs e) 

 { 

 tbInput.Text = "功过C#托管代码拿到textbox"; 

 tbInput.FontWeight = System.Windows.FontWeights.Bold; 

 } 

C#代码中直接引用了XAML文件中声明的x:Class属性值对象来为它赋值,GetValue和SetValue是在托管代码中直接获取和设置对象的的一种方法。

<Canvas Background="White" Margin="0,0,-340,-302">

<TextBox x:Name="tbInput"  Width="605" Height="50" Canvas.Top="28" Canvas.Left="30" FontSize="30" Text="4"/>

<Button x:Name="btn1" Click="btn1_Click" Width="120" Height="50" Canvas.Left="60" Canvas.Top="102" FontSize="20" Content="请点击"/>

<Rectangle x:Name="rectangle" Width="200" Height="200" Canvas.Left="0" Canvas.Top="300" Stroke="Red" Fill="Green"/>

<Button x:Name="btn1_Copy" Click="btn1_Copy_Click" Width="270" Height="50" Canvas.Left="60" Canvas.Top="185" FontSize="20" Content="GetValue和SetValue示例"/>

<TextBlock x:Name="text" Height="30" Width="100" Text="" FontSize="20" Canvas.Left="175" Canvas.Top="252" />

</Canvas>

.cs文件代码:

private void btn1_Copy_Click(object sender, RoutedEventArgs e) 

 { 

double left = ; 

double top = ; 

//设置矩形的位置

rectangle.SetValue(Canvas.LeftProperty, left); 

 rectangle.SetValue(Canvas.TopProperty, top); 

//设置后通过GetValue获取矩形位置的值,然后显示在textblock中

string width = rectangle.GetValue(Rectangle.WidthProperty).ToString(); 

string height = rectangle.GetValue(Rectangle.HeightProperty).ToString(); 

//把GetValue获得的结果放到textblock中

text.Text = "矩形的宽:" + width + ",高:" + height; 

 }

Silverlight编程模型的更多相关文章

  1. 转:[你必须知道的异步编程]——异步编程模型(APM)

    本专题概要: 引言 你知道APM吗? 你想知道如何使用异步编程模型编写代码吗? 使用委托也可以实现异步编程,你知道否? 小结 一.引言 在前面的C#基础知识系列中介绍了从C#1.0——C#4.0中一些 ...

  2. [你必须知道的异步编程]——异步编程模型(APM)

    本专题概要: 引言 你知道APM吗? 你想知道如何使用异步编程模型编写代码吗? 使用委托也可以实现异步编程,你知道否? 小结 一.引言 在前面的C#基础知识系列中 介绍了从C#1.0——C#4.0中一 ...

  3. JS魔法堂:深究JS异步编程模型

    前言  上周5在公司作了关于JS异步编程模型的技术分享,可能是内容太干的缘故吧,最后从大家的表情看出"这条粉肠到底在说啥?"的结果:(下面是PPT的讲义,具体的PPT和示例代码在h ...

  4. 多线程之异步编程: 经典和最新的异步编程模型,async与await

    经典的异步编程模型(IAsyncResult) 最新的异步编程模型(async 和 await) 将 IAsyncInfo 转换成 Task 将 Task 转换成 IAsyncInfo 示例1.使用经 ...

  5. 多线程之异步编程: 经典和最新的异步编程模型, IAsyncInfo 与 Task 相互转换

    经典的异步编程模型(IAsyncResult) 最新的异步编程模型(async 和 await) 将 IAsyncInfo 转换成 Task 将 Task 转换成 IAsyncInfo 示例1.使用经 ...

  6. jQuery插件编写及链式编程模型小结

    JQuery极大的提高了我们编写JavaScript的效率,让我们可以愉快的编写代码,做出各种特效.大多数情况下,我们都是使用别人开发的JQuery插件,今天我们就来看看如何把我们常用的功能做出JQu ...

  7. 云巴:基于MQTT协议的实时通信编程模型

    概要 有人常问,云巴实时通信系统到底提供了一种怎样的服务,与其他提供推送或 IM 服务的厂商有何本质区别.其实,从技术角度分析,云巴与其它同类厂商都是面向开发者的通信服务,宏观的编程模型都是大同小异, ...

  8. 第3章 窗口与消息_3.1Windows编程模型

    第3章窗口与消息 3.1 Windows_编程模型 (1)窗口程序的运行过程   ①设计窗口   ②注册窗口类(RegisterClassEx).在注册之前,要先填写RegisterClassEx的参 ...

  9. MFC-01-Chapter01:Hello,MFC---1.1 Windows 编程模型

    1.1 Windows编程模型 为传统的操作系统编写的程序使用的是过程化模型,即程序从头到尾按顺序执行.例如C程序,从main函数入口开始执行,中间调用不同的函数一直到程序结束返回,这种过程是程序本身 ...

随机推荐

  1. php全角字符转换为半角函数 实例代码

    PHP全角半角转换函数,把目前能找到的所有全角都列出来了一个个替换吧. 之前试过网上找的通过ASCII之类的字符替换,发现很多莫名其妙的问题.最后还是换成下面的字符替换方式了,把目前能找到的所有全角都 ...

  2. 生成不重复随机数,int转 TCHAR 打印输出

    在0~n 中 随机去除不重复的k个数 int k=100; int n=80000; for(int i=0;k>0&&i<n;i++) { if((bigrand()%( ...

  3. 11)Java abstract class 和 interface

    abstract class 和 interface 的区别        含有abstract修饰符的class即为抽象类,abstract 类不能创建实例对象.含有abstract方法的类必须定义 ...

  4. python & pandas链接mysql数据库

    Python&pandas与mysql连接 1.python 与mysql 连接及操作,直接上代码,简单直接高效: import MySQLdb try: conn = MySQLdb.con ...

  5. Python初学者笔记:打印出斐波那契数列的前10项

    问题:斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列.费波那西数列.费波拿契数.费氏数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.- ...

  6. WPF优化体验<一>

    最近将一个开发和维护了五年的一个Winform项目进行重构,考虑到最近很流行将用户体验挂在嘴上,于是采用了WPF技术,希望能在外观和体验上有一个全新的效果. 以前使用Winform的时候内存控制得不错 ...

  7. .NET开源工作流RoadFlow-表单设计-文本框

    点击表单设计器工具栏上的文本框按钮,会弹出文本框属性对话框: 绑定字段:该文本框与表单属性设置中选择的表的某个字段绑定(该文本框中的值将会保存到该字段中). 默认值:该文本框的初始化值. 宽度:文本框 ...

  8. [INS-41112] Specified network interface doesnt maintain connectivi

    OS: Oracle Linux Server release 6.3 DB: Oracle 11.2.0.3 安装11.2.0.3.0的RAC,在安装GRID时报错: [INS-41112] Spe ...

  9. DeviceOne开发HelloWord

    http://www.cnblogs.com/wjiaonianhua/p/5278061.html http://www.jb51.net/article/75693.htm 2015 年 9 月 ...

  10. super的用法

    1.调用父类的构造方法子类可以调用由父类声明的构造方法.但是必须在子类的构造方法中使用super关键字来调用. 2.操作被隐藏的成员变量和被覆盖的成员方法如果想在子类中操作父类中被隐藏的成员变量和被覆 ...