Silverlight编程模型

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