一步一步學Silverlight :如何在Silverlight中與HTML DOM交互(下)

作者: TerryLee  來源: 博客園  發布時間: 2008-10-09 10:59  閱讀: 4142 次  推薦: 0   原文鏈接   [收藏]  
 

概述

Silverlight 2 Beta 1版本發布了,無論從Runtime還是Tools都給我們帶來了很多的驚喜,如支持框架語言Visual Basic, Visual C#, IronRuby, Ironpython,對JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步學Silverlight 2系列》文章將從Silverlight 2基礎知識、數據與通信、自定義控件、動畫、圖形圖像等幾個方面帶您快速進入Silverlight 2開發。

Silverlight中內置了對于HTML、客戶端腳本等的支持,本文為如何在Silverlight 2中與HTML DOM交互第二部分。在第一部分中主要介紹了如何訪問和修改已有的HTML DOM,我們還可以完全創建一個新的DOM元素或者移除一個已有的DOM元素,除此之外,我們還可以為DOM元素添加事件處理。

創建DOM元素

首先我們來看如何創建一個新的DOM元素,最終的效果如下,當我們在文本框中輸入文字后,單擊創建,將在上面的區域中創建一個li元素。

 TerryLee_Silverlight2_0089

先來定義一下HTML頁面,甚至Silverlight插件的高度。

<div id="parentdiv">
    <ul id="list">
    </ul>
</div>
<div  style="height:200px;">
    <asp:Silverlight ID="Xaml1" runat="server" 
    Source="~/ClientBin/TerryLee.SilverlightAccessDom2.xap" 
    Version="2.0" Width="100%" Height="200px" />
</div>

并且為上面的div定義一個簡單的樣式,以示與Silverlight區分

#parentdiv
{
    background:#FCDFB3;
    border:solid 1px #FF9900;
    width:500px;
    height:100px;
    margin-bottom:20px;    
}

在Silverlight中進行界面布局,XAML如下:

<Canvas Background="#CDFCAE">
    <TextBlock Text="Silverlight Accessing the HTML DOM" Foreground="Red"
               Canvas.Top="10" Canvas.Left="30" FontSize="18">
    </TextBlock>
    <WatermarkedTextBox x:Name="input" Watermark="請在這里輸入"
                        Height="40" Width="300"
                        Canvas.Left="30" Canvas.Top="50">
    </WatermarkedTextBox>
    <Button x:Name="createButton" Background="Red"
            Height="40" Width="100" Content="創 建"
            Canvas.Top="50" Canvas.Left="350"
            Click="createButton_Click">
    </Button>
</Canvas>

編寫創建按鈕的代碼,首先獲取到要往里面添加元素的父元素,即我們定義的ul:

HtmlElement parent = HtmlPage.Document.GetElementById("list");

 

創建一個新的元素li,并設置屬性

HtmlElement child = HtmlPage.Document.CreateElement("li");
child.SetAttribute("innerText", this.input.Text);

添加新元素到parent中

parent.AppendChild(child);

 

完整的代碼如下:

private void createButton_Click(object sender, RoutedEventArgs e)
{
    HtmlElement parent = HtmlPage.Document.GetElementById("list");

    HtmlElement child = HtmlPage.Document.CreateElement("li");
    child.SetAttribute("innerText", this.input.Text);

    parent.AppendChild(child);
}

 

0
0
 
標簽:Silverlight
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()