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 = 300; double top = 500; //设置矩形的位置

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; }

转载于:https://www.cnblogs.com/xmfdsh/p/3728559.html

Silverlight编程模型相关推荐

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

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

  2. 带着镣铐的舞者(从用户体验与编程模型两方面看AJAX与B/S 技术)

    带着镣铐的舞者 从用户体验与编程模型两方面看AJAX与B/S 技术 ****************************************************************** ...

  3. CUDA刷新器:CUDA编程模型

    CUDA刷新器:CUDA编程模型 CUDA Refresher: The CUDA Programming Model CUDA,CUDA刷新器,并行编程 这是CUDA更新系列的第四篇文章,它的目标是 ...

  4. C语言网络编程:TCP编程模型

    编程模型 TCP编程模型如下 TCP服务器的工作过程如下: 服务器创建一个专门的"文件描述符"来监听来自客户端的"三次握手",然后建立链接 链接建立成功后,服务 ...

  5. 朴素、Select、Poll和Epoll网络编程模型实现和分析——Poll、Epoll模型处理长连接性能比较

    在<朴素.Select.Poll和Epoll网络编程模型实现和分析--模型比较>一文中,我们分析了各种模型在处理短连接时的能力.本文我们将讨论处理长连接时各个模型的性能.(转载请指明出于b ...

  6. 朴素、Select、Poll和Epoll网络编程模型实现和分析——模型比较

    经过之前四篇博文的介绍,可以大致清楚各种模型的编程步骤.现在我们来回顾下各种模型(转载请指明出于breaksoftware的csdn博客) 模型编程步骤对比 <朴素.Select.Poll和Ep ...

  7. 朴素、Select、Poll和Epoll网络编程模型实现和分析——Epoll模型

    在阅读完<朴素.Select.Poll和Epoll网络编程模型实现和分析--Select模型>和<朴素.Select.Poll和Epoll网络编程模型实现和分析--Poll模型> ...

  8. 朴素、Select、Poll和Epoll网络编程模型实现和分析——Poll模型

    在<朴素.Select.Poll和Epoll网络编程模型实现和分析--Select模型>中,我们分析了它只能支持1024个连接同时处理的原因.但是在有些需要同时处理更多连接的情况下,102 ...

  9. 朴素、Select、Poll和Epoll网络编程模型实现和分析——Select模型

    在<朴素.Select.Poll和Epoll网络编程模型实现和分析--朴素模型>中我们分析了朴素模型的一个缺陷--一次只能处理一个连接.本文介绍的Select模型则可以解决这个问题.(转载 ...

最新文章

  1. 嗷嗷嗷,kuangbin大大博客上拉的题
  2. MacBook Pro休眠掉电、耗电量大问题解决方案
  3. 怎么html中加样式,简明教程 在HTML中添加样式表的方法
  4. opencv 裁剪 java_OpenCV绘制轮廓和裁剪
  5. Python-02-基础知识
  6. 会不会导致内存泄漏_Java内存泄漏!为什么会泄漏?如何泄漏?怎么定位?
  7. boost::timer库使用
  8. 图论算法(五)--求解割点、割边(JAVA)
  9. Redis读写分离技术解析
  10. 禁止页面拖拽事件(数据什么的)
  11. mysql 多个命令行,5.8.2.1在Windows命令行中启动多个MySQL实例
  12. JavaScript:使用js脚本写入HTML代码
  13. C#list转JSON(Newtonsoft.Json.dll)(仅做记录)
  14. python灰产路子有哪些_Python3 网络爬虫(四):视频下载,那些事儿!-后台/架构/数据库-敏捷大拇指-一个敢保留真话的IT精英社区...
  15. 基于android的手机订票系统设计,基于Android的火车票预订系统的设计与实现.doc
  16. 大数据,云计算 核心体系
  17. 如何获取伪装ip下的真实ip地址
  18. HyperV Windows系统端口转发给主机 2021-12-13
  19. FS4059B是5V输入升压充电8.4V1.5A的升压恒流充电IC高效串联充电
  20. 将两个iso镜像刻录到一张dvd光盘上,当然是做系统启动盘用

热门文章

  1. Foxmail自动收取新邮件
  2. java web dao层_java web 中web层直接调用dao层 可以吗?
  3. 怎么访问和java包同级的文件_JAVA程序员谈几种访问文件的方式
  4. vs编译器 printf 控制台输出_【语言教程】通过语言了解GCC编译器工作过程
  5. 圆角阴影_Win10新界面曝光,圆角设计加阴影半透明,更招年轻人喜欢
  6. 科学家利用耳蜗植入物来测量脑电波来优化听力
  7. [unreal4入门系列之九] UE4创建空白关卡并添加碰撞体
  8. webview键盘自适应_苹果笔记本显示器键盘专利曝光:单按键可重新配置
  9. 这群人学做AI架构师,目标却是让人们感知不到AI的存在
  10. 高糊视频秒变4K!Facebook发布低分辨率视频实时渲染算法,网友:是好东西,但是玩不起...