Dim ec1 As Boolean = btnEchoText.AttachEvent("onclick", AddressOf Me.OnEchoTextClicked)
【IT168技术文档】介绍
这个 QuickStart sample将演示如何在基于Silverlight的应用程序中使用 托管代码通过编程的方式来访问HTML DOM和控制HTML页中的可视化元素 .访问HTML DOM可以让我们真正的使用NET Framework 代码来控制用户机器上的WEB页的UI等,而不用像以前一些服务端动态页面还需要回传服务器.
运行 查看 想要在基于Silverlight的应用程序中做到以上的功能,你需要准备以下步骤:
Handling XAML文件的根 Canvas Loaded 事件.
连接并且handling 一个事件 event 到HTML DOM 元素上.
访问HTML DOM的属性.
调用HTML DOM中的方法.
要求 (available from the Silverlight download site):
Microsoft Silverlight 1.1 Alpha.
Microsoft Visual Studio Code Name "Orcas" Beta 1.
Microsoft Silverlight Tools Alpha for Visual Studio Code Name "Orcas" Beta 1.
A Silverlight project. For instructions, see 怎么样来创建一个Silverlight Project.
处理 Silverlight XAML中的canvas中的一个事件 处理 XAML的 Loaded 事件,在 Canvas 建立好托管类和Web page之间的联系. 在XAML文件的 Loaded 属性中, 指定好该方法的名称,以便于你的托管代码进行事件处理. 在接下来的示例中e, Loaded 属性被赋值为OnLoaded, 它是和第二步中处理XAML事件过程相关的.
cs
<Canvas
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Samples.Silverlight.CS.BasicCanvas;assembly=HtmlDOM1.dll"
x:Name="rootCanvas"
Height="500"
Width="500"
Loaded="OnLoaded"
Background="Red"
>
</Canvas>
VB
<Canvas x:Name="parentCanvas"
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Loaded="OnLoaded"
x:Class="HtmlDOM1.BasicCanvas;assembly=ClientBin/HtmlDOM1.dll"
Width="640"
Height="480"
Background="White"
>
</Canvas>
后台文件中添加一个方法,它的名称就是你在第一步中在XAML文件中指定的Loaded属性名称. 这个方法可以处理几乎所有初始化的任务, 创建和注册各种对象,关联事件等等.
cs
public void OnLoaded(object sender, EventArgs e)
VB
Public Sub OnLoaded(ByVal sender As Object, ByVal e As EventArgs)
为了在事件处理方法中能访问HTML DOM ,请创建一个私有的, module-level 类型的变量 HtmlDocument 然后给其添加引用赋值为一个代表 HTML page的对象,当然,这个HTML page是Sivleright程序的宿主.接下来的 Onloaded 方法中的代码演示了这个步骤.
cs
document = HtmlPage.Document;
VB
document = HtmlPage.Document
处理HTML DOM 元素的事件
在托管代码中得到HTML 元素的引用 . 想要实现这样的要求, 你可以使用刚创建的HTML document 对象的GetElementByID 方法,你只需要传入一个HTML elements的ID 进来就可以了. 接下来的 Onloaded 方法中的代码演示了如何得到HTML page中的 Echo Text button 的引用 .
cs
HtmlElement btnEchoText = document.GetElementByID("btnEchoText");
VB
Dim btnEchoText As HtmlElement = document.GetElementByID("btnEchoText")
添加事件处理. 想要添加一个按钮的 OnClick 事件处理程序, 你需要得到这个button的引用 (你可以参照第一步来得到). 你可以添加事件就像下面示例中的Onloaded 方法一样.
cs
bool ec1 = btnEchoText.AttachEvent("onclick", new Eventhanlder<HtmlEventArgs>(this.OnEchoTextClicked));
VB
Dim ec1 As Boolean = btnEchoText.AttachEvent("onclick", AddressOf Me.OnEchoTextClicked)
编写 event-handling 方法. 接下来的方法演示了如何申明一个私有方法来处理Echo Text button的事件 .
cs
private void OnEchoTextClicked(object sender, HtmlEventArgs e)
VB
Private Sub OnEchoTextClicked(ByVal sender As Object, ByVal e As HtmlEventArgs)
访问HTML DOM中的属性
使用HTML DOM 对象的属性来得到关于它的信息. 比如,你可以使用 HtmlPage 对象的某些属性来得到当前页的Uniform Resource Identifier (URI),就像下面OnGetPropertiesClicked 方法中的代码一样.
cs
string outputText = HtmlPage.DocumentUri.AbsolutePath + " - " + HtmlPage.CurrentBookmark;
VB
Dim outputText As String = HtmlPage.DocumentUri.AbsolutePath & " - " & _
HtmlPage.CurrentBookmark
给页面中的某些元素添加或改变属性值, 比如, 对于一个text box. 使用 SetAttribute 方法来设置已经和DOM element建立好引用关系的属性.接下来的OnGetPropertiesClicked 方法中的代码展示了指派URI串到第一步页面中得到的text box中.
cs
document.GetElementByID("txtOutputProperties").SetAttribute("value", outputText);
VB
document.GetElementByID("txtOutputProperties").SetAttribute("value", outputText)
在HTML DOM中调用方法
得到一个你想调用的方法的HTML DOM 元素的引用.
直接调用得到的 DOM 方法. 比如,下面的示例调用 HtmlPage 的Navigate 方法来在我们点Jump to MSN时转向到其它链接地址.
cs
private void OnJump(object sender, EventArgs e)
{
HtmlPage.Navigate("http://www.msn.com");
}
VB
Private Sub OnJump(ByVal sender As Object, ByVal e As EventArgs)
HtmlPage.Navigate("http://www.msn.com")
End Sub
原文地址
1