`
gstarwd
  • 浏览: 1539396 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

SilverLight学习笔记--Silverlight中操作DOM元素

阅读更多

在这里我们将实验一下在Silverlight中如何操作HTML的DOM元素。
首先创建Silverlight应用程序。
 
创建用户界面:

<!-- <br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->< UserControl x:Class = " SLDomCsCode.Page "
    xmlns
= " http://schemas.microsoft.com/winfx/2006/xaml/presentation "  
    xmlns:x
= " http://schemas.microsoft.com/winfx/2006/xaml "  
    Width
= " 400 "  Height = " 400 " >
    
< Grid x:Name = " LayoutRoot "  Background = " White " >
        
< StackPanel Width = " 400 "  Height = " 350 " >
         
< TextBlock Text = " 请输入文本内容: "  Margin = " 10 "   ></ TextBlock >
         
< TextBox x:Name = " txtBxMyInput "  Width = " 300 "  Height = " 30 " ></ TextBox >
        
< Button Width = " 200 "  Height = " 30 "  Content = " 修改DOM元素属性 "  Click = " Button_Click "  Margin = " 5 "  FontSize = " 16 "  Foreground = " green " ></ Button >
        
< Button Width = " 200 "  Height = " 30 "  Content = " 获取DOM元素内容 "  Click = " Button_Click_2 "  Margin = " 5 "  FontSize = " 16 "  Foreground = " green " ></ Button >
            
< TextBlock Text = " 获取的DOM元素内容如下: "  TextAlignment = " Center " ></ TextBlock >
            
< TextBlock x:Name = " tbGetDomMsg "  TextAlignment = " Center " ></ TextBlock >
            
< Button Width = " 200 "  Height = " 30 "  Content = " 创建并添加新的DOM元素 "  Click = " Button_Click_1 "  Margin = " 5 "  FontSize = " 16 "  Foreground = " green " ></ Button >
            
< Button Width = " 200 "  Height = " 30 "  Content = " 删除DOM元素 "  Click = " Button_Click_3 "  Margin = " 5 "  FontSize = " 16 "  Foreground = " green " ></ Button >
        
</ StackPanel >
    
</ Grid >
</ UserControl >

界面如图:


SLDomCsCodeTestPage.aspx页面内容如下:
我们加入了一个Label标签和一个div,其中Label标签用于显示我们如何修改和读取DOM元素。div用于显示我们如何创建DOM元素(包括:添加和删除)

<!-- <br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><% @ Page Language = " C# "  AutoEventWireup = " true "   %>

<% @ Register Assembly = " System.Web.Silverlight "  Namespace = " System.Web.UI.SilverlightControls "
    TagPrefix
= " asp "   %>

<! DOCTYPE html PUBLIC  " -//W3C//DTD XHTML 1.0 Transitional//EN "   " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >

< html xmlns = " http://www.w3.org/1999/xhtml "  style = " height:100%; " >
< head runat = " server " >
    
< title > SLDomCsCode </ title >
</ head >
< body style = " height:100%;margin:0; " >
    
< form id = " form1 "  runat = " server "  style = " height:100%; " >
        
< asp:ScriptManager ID = " ScriptManager1 "  runat = " server " ></ asp:ScriptManager >
        
< div  style = " height:50%; "   >
            
< label id = " lblHtmlMsg "   > 此处为修改前的内容 </ label >
            
< asp:Silverlight ID = " Xaml1 "  runat = " server "  Source = " ~/ClientBin/SLDomCsCode.xap "  MinimumVersion = " 2.0.31005.0 "  Width = " 100% "  Height = " 100% "   />
            
< div id = " divOnHtml "   >     </ div >
        
</ div >

    
</ form >
</ body >
</ html >

 

Page.xaml.cs代码内容如下:
为了控制DOM,我们要记得引入命名空间:

<!-- <br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->using  System.Windows.Browser;  // 引入此空间以便使用 HtmlDocument, HtmlPage等类

下面是代码内容

<!-- <br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Net;
using  System.Windows;
using  System.Windows.Controls;
using  System.Windows.Documents;
using  System.Windows.Input;
using  System.Windows.Media;
using  System.Windows.Media.Animation;
using  System.Windows.Shapes;
using  System.Windows.Browser;  // 引入此空间以便使用 HtmlDocument, HtmlPage等类

namespace  SLDomCsCode
{
    
public   partial   class  Page : UserControl
    {

        
// 初始化一个document
        HtmlDocument doc  =  HtmlPage.Document;

        
public  Page()
        {
            InitializeComponent();
            HtmlElement txtMsg 
=  doc.GetElementById( " lblHtmlMsg " );  // 取得HTML页面上id为lblHtmlMsg的DOM元素(在此处是一个lable元素)

        }

        
private   void  Button_Click( object  sender, RoutedEventArgs e)
        {
            
// 获取一个DOM节点
            HtmlElement txtMsg  =  doc.GetElementById( " lblHtmlMsg " );  // 取得HTML页面上id为lblHtmlMsg的DOM元素(在此处是一个lable元素)
            txtMsg.SetAttribute( " innerText " this .txtBxMyInput.Text);
            txtMsg.SetStyleAttribute(
" background-color " ,Colors.Blue.ToString());
        }

        
private   void  Button_Click_1( object  sender, RoutedEventArgs e)
        {

            var Cars 
=   new []
            {
                
new  {CarName = " Corolla " ,Doors = " 5 " ,Price = 220000 },
                 
new  {CarName = " Ford " ,Doors = " 5 " ,Price = 42000 },
                  
new  {CarName = " Benz " ,Doors = " 5 " ,Price = 140000 },
                 
new  {CarName = " Holden " ,Doors = " 3 " ,Price = 12000 },
            };


            HtmlElement tb; 
// 定义一个tb元素
            tb  =  doc.CreateElement( " table " );  // 代码创建一个表并把它指派给上面的定义的tb元素
            tb.SetAttribute( " id " , " newtb " );

            HtmlElement txtBxElement 
=  HtmlPage.Document.GetElementById( " divOnHtml " );  // 取得HTML页面上id为divOnHtml的DOM元素(在此处是一个div)

            
#region   创建表头
            HtmlElement Headrow 
=  doc.CreateElement( " tr " );  // 定义一个tr(行)

            HtmlElement HeadcarNames 
=  doc.CreateElement( " td " );   // 定义一个td(列)
            HeadcarNames.SetAttribute( " innerText " " 品牌 " );       // 设置td列的内容   
            Headrow.AppendChild(HeadcarNames);  // 把td列加入tr行


            HtmlElement HeadcarDoors 
=  doc.CreateElement( " td " );   // 定义一个td(列)
            HeadcarDoors.SetAttribute( " innerText " " 几门 " );       // 设置td列的内容   
            Headrow.AppendChild(HeadcarDoors);  // 把td列加入tr行


            HtmlElement HeadcarPrice 
=  doc.CreateElement( " td " );   // 定义一个td(列)
            HeadcarPrice.SetAttribute( " innerText " " 价格 " );       // 设置td列的内容   
            Headrow.AppendChild(HeadcarPrice);  // 把td列加入tr行

            tb.AppendChild(Headrow); 
// 把tr行加入tb表

            
#endregion

            
foreach  (var items  in  Cars)
            {
                HtmlElement row 
=  doc.CreateElement( " tr " );  // 定义一个tr(行)

 

                
#region  创建表体

                HtmlElement carNames 
=  doc.CreateElement( " td " );   // 定义一个td(列)
                carNames.SetAttribute( " innerText " , items.CarName.ToString());       // 设置td列的内容   
                row.AppendChild(carNames);  // 把td列加入tr行

                HtmlElement carDoors 
=  doc.CreateElement( " td " );   // 定义一个td(列)
                carDoors.SetAttribute( " innerText " , items.Doors.ToString());       // 设置td列的内容   
                row.AppendChild(carDoors);  // 把td列加入tr行

                HtmlElement carPrice 
=  doc.CreateElement( " td " );   // 定义一个td(列)
                carPrice.SetAttribute( " innerText " , items.Price.ToString());       // 设置td列的内容   
                row.AppendChild(carPrice);  // 把td列加入tr行
                 #endregion

                tb.AppendChild(row); 
// 把tr行加入tb表
            }



            
// txtBxElement.AppendChild(tb);
            txtBxElement.SetAttribute( " innerHTML " , tb.GetAttribute( " outerHTML " ));  // 把tb表加入div元素中
        }


        
private   void  Button_Click_2( object  sender, RoutedEventArgs e)
        {
            HtmlElement tbGetDomMsg 
=  doc.GetElementById( " lblHtmlMsg " );
            
string  s  =  tbGetDomMsg.GetAttribute( " innerHTML " );

            
this .tbGetDomMsg.Text  =  s;
        }

        
private   void  Button_Click_3( object  sender, RoutedEventArgs e)
        {
            HtmlElement parent 
=  HtmlPage.Document.GetElementById( " divOnHtml " );
            HtmlElement child 
=  HtmlPage.Document.GetElementById( " newtb " );
            parent.RemoveChild(child);  
        }
    }
}

  运行效果图:


前往:Silverlight学习笔记清单
本文程序在Silverlight2.0和VS2008环境中调试通过。本文参照了部分网络资料,希望能够抛砖引玉,大家共同学习。

分享到:
评论

相关推荐

    SilverLight学习笔记--Silverlight之数据校验的实现

    在本文中,我们将深入探讨Silverlight中的数据校验实现,这是在Silverlight应用程序中确保用户输入数据正确性和完整性的关键步骤。在前两篇“Silverlight学习笔记”中,我们已经学习了数据绑定的基础和`...

    SilverLight聊天室--注册和登陆

    【SilverLight聊天室--注册和登陆】是一个基于SilverLight技术构建的实时通信应用,它集成了WCF...通过学习这个项目的源码,开发者可以深入理解SilverLight与WCF的结合使用,以及如何构建一个完整的用户认证系统。

    SourceCode-Silverlight-InstallExperience-SC.zip

    本资料包“SourceCode-Silverlight-InstallExperience-SC.zip”则提供了Silverlight安装过程中的源代码,为开发者揭示了Silverlight安装体验背后的实现机制。 一、Silverlight简介 Silverlight是基于浏览器的插件,...

    Silverlight5--“需要安装最新的silverlight Developer运行时”解决办法

    VS2010创建SILVERLIGHT项目时提示“你需要安装时新的SILVERLIGHT DEVELOPER运行时”。解决这个问题,可以先安装这个程序,然后搜索我的资源,安装第二个程序:Silverlight5_Developer--“需要安装最新的silverlight ...

    Silverlight2.0实例-〖Silverlight Klotski〗

    4. **事件处理**:在Silverlight中,用户交互如点击、拖动等都可以通过事件处理来响应。Klotski游戏中的滑动操作就是通过事件监听和处理来实现的,确保用户操作的即时反馈。 5. **组件模型**:Silverlight支持...

    pro-silverlight-2-in-c-2008-windows-net

    - **目标平台**:Silverlight 2可以运行在Windows和Mac OS X等多种操作系统上,因此非常适合创建跨平台的应用程序。 - **浏览器兼容性**:可以在不同的浏览器中运行,包括Internet Explorer、Firefox等主流浏览器。 ...

    Silverlight开源控件--可用于MDI开发的模态非模态两用窗体.

    在Silverlight中实现MDI并非原生支持,但可以通过自定义控件和编程技巧来模拟这一功能。 本开源小控件是专门为Silverlight的MDI应用开发而设计的,它解决了在Silverlight环境中创建和管理多个交互式子窗口的挑战。...

    WPF and Silverlight 学习笔记

    在本系列的学习笔记中,我们将深入探讨Windows Presentation Foundation (WPF) 和 Silverlight这两个由Microsoft推出的用户界面框架。这两者都是用于构建丰富的桌面和Web应用程序的技术,但它们各有特点和适用场景。...

    Silverlight2.0实例-〖Silverlight Surface〗

    在“Silverlight Surface”实例中,用户可以浏览一系列照片,这些照片不仅可以被轻易地拖动,还支持缩放和旋转操作。这是通过 Silverlight 的绘图和触摸输入处理功能实现的。在 Silverlight 2.0 中,开发者可以利用 ...

    Silverlight 4 Problem - Desgin - Solution

    本书由Wrox公司推出,旨在通过多个实际案例深入探讨Silverlight 4项目的开发过程中的问题与解决策略。Silverlight是微软推出的一款用于创建交互式用户界面的技术,适用于Web应用程序和桌面应用程序。本书针对开发者...

    Silverlight-Developer-x64文件版本5.1.30514.0

    在这个特定的版本——"Silverlight-Developer-x64文件版本5.1.30514.0"中,我们主要关注的是面向64位操作系统的开发者版本。 **1. 面向开发者的特性** 开发者版本的Silverlight提供了全套的开发工具,包括集成开发...

    Silverlight Migration Guide - February 2009.pdf

    它可以无缝运行于多种操作系统和浏览器环境中,无需担心不同的操作系统或浏览器版本之间的兼容性问题。 **2. 降低成本并简化维护** 使用Silverlight可以显著降低部署成本,并简化应用程序的维护工作。由于...

    Silverlight1.0实例-〖大钢琴〗

    动画在Silverlight中是通过Timeline和Storyboard来实现的。在这个大钢琴实例中,可能为每个琴键设定了按下和释放时的动画效果,例如改变颜色、大小或透明度,以模拟真实的钢琴键动作。Timeline允许开发者精确地控制...

    Silverlight 4 Problem - Design - Solution.pdf

    - **Silverlight 4新特性**:书中详细介绍了Silverlight 4的一些关键特性,如图表绘制、增强的数据输入控件、导航框架和元素到元素绑定等。 - **Silverlight工具包**:通过新版本的Silverlight工具包,可以实现主题...

    Silverlight 4 Problem - Desgin - Solution_part1

    Silverlight 4 Problem - Desgin - Solution是由Wrox公司推出的Silverlight 4新书,该书使用10余中案例,详细介绍Silverlight 4项目设计,和在设计过程中会发生的问题,以及相关解决方案。该书是目前市面上不可多得...

    Silverlight 4 Problem - Desgin - Solution_part2

    Silverlight 4 Problem - Desgin - Solution是由Wrox公司推出的Silverlight 4新书,该书使用10余中案例,详细介绍Silverlight 4项目设计,和在设计过程中会发生的问题,以及相关解决方案。该书是目前市面上不可多得...

    Silverlight通过json-rpc交互数据

    在Silverlight中,json-rpc通常通过WCF(Windows Communication Foundation)服务实现。WCF提供了一种统一的编程模型,可以方便地实现各种通信协议,包括基于JSON的json-rpc。 1. **配置WCF服务**:首先,我们需要...

    WPF and Silverlight 学习笔记 chm版

    将网上流传甚广的“WPF and Silverlight 学习笔记”精心制作成CHM格式,供各位WPF和Silverlight程序员学习使用。

    Silverlight1.0实例-〖模拟时钟〗

    在本实例中,我们将学习如何利用Silverlight的图形绘制能力,以及事件处理机制来实时更新时间的显示。 首先,让我们了解Silverlight 1.0的基础。这个版本是Silverlight的早期迭代,主要关注基础的UI元素和基本的...

    silverlight-通过-WebService-连接数据库.doc

    在本文档中,我们探讨了如何使用Silverlight通过WebService与数据库进行交互,特别是实现了DataGrid中的数据增删改查功能。Silverlight是一种强大的RIA(Rich Internet Application)开发技术,允许开发者创建具有...

Global site tag (gtag.js) - Google Analytics