silverlight   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了学Silverlight 2系列(20):如何在Silverlight中与HTML DOM交互(下)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

  Silverlight中内置了对于HTML、客户端脚本等的支持,本文为如何在 Silverlight 2中与HTML DOM交互第二部分。在第一部分中主要介绍了如何访问 和修改已有的HTML DOM,我们还可以完全创建一个新的DOM元素或者移除一个已 有的DOM元素,除此之外,我们还可以为DOM元素添加事件处理。 创建DOM元素 首先我们来看如何创建一个新的DOM元素,最终的效果如下,当我们在
 

Silverlight中内置了对于HTML、客户端脚本等的支持,本文为如何在 Silverlight 2中与HTML DOM交互第二部分。在第一部分中主要介绍了如何访问 和修改已有的HTML DOM,我们还可以完全创建一个新的DOM元素或者移除一个已 有的DOM元素,除此之外,我们还可以为DOM元素添加事件处理。

创建DOM元素

首先我们来看如何创建一个新的DOM元素,最终的效果如下,当我们在文本框 中输入文字后,单击创建,将在上面的区域中创建一个li元素。

学Silverlight 2系列(20):如何在Silverlight中与HTML DOM交互(下)

先来定义一下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);
}

 

运行后创建第一个元素

学Silverlight 2系列(20):如何在Silverlight中与HTML DOM交互(下)

再次创建一个

学Silverlight 2系列(20):如何在Silverlight中与HTML DOM交互(下)

  

移除DOM元素

既然可以创建元素,对应的也可以删除元素,我们在页面上放上几个 <li>元素,然后输入id进行删除代码如下:

private void deleteButton_Click(object sender,RoutedEventArgs E)
{
  HtmlElement parent = HtmlPage.Document.GetElementById("list");
  HtmlElement child = HtmlPage.Document.GetElementById(this.input.Text);
   parent.RemoveChild(child);
}

运行后界面上有三个<li>

学Silverlight 2系列(20):如何在Silverlight中与HTML DOM交互(下)

删除其中一个

学Silverlight 2系列(20):如何在Silverlight中与HTML DOM交互(下)

为DOM注册事件

除了添加和移除DOM元素外,我们还可以为DOM元素附加事件,在下面的例子 中我们将通过Silverlight动态创建一个DOM元素<a>,并未它注册单击事 件,单击时修改Silverlight中的矩形背景色。先准备相关的HTML。

<div id="parent">
</div>
<div  style="height:200px;">
  <asp:Silverlight ID="Xaml1" runat="server"
     source="~/ClientBin/TerryLee.SilverlightAccessingDom3.xap"
     Version="2.0" Width="100%" Height="200px" />
</div>

并且定义两个样式,其中newstyle我们将在Silverlight中为新添加的a元素 使用。

#parent
{
  BACkground:#FCDFB3;
  border:solid 1px #FF9900;
  width:500px;
  height:100px;
  margin- bottom:20px;
}
.newstyle
{
  BACkground:#0099FF;
   border:solid 1px #0000FF;
}

一个简单的界面,放置一个按钮和矩形:

<Canvas BACkground="#CDFCAE">
  <TextBlock Text="Silverlight Accessing the HTML DOM" Foreground="Red"
       Canvas.Top="10" Canvas.Left="30" FontSize="18">
</TextBlock>
  <Rectangle x:Name="result" Height="40" Width="300" Fill="Red"
        Canvas.Left="30" Canvas.Top="50"
        RadiusX="5" RadiusY="5">
  </Rectangle>
  <Button x:Name="addButton" BACkground="Red"
    Height="40" Width="100" Content="添 加"
    Canvas.Top="50" Canvas.Left="350"
     Click="addButton_Click">
   </Button>
</Canvas>

添加DOM元素,创建一个a元素,并为它设置属性,其中用CssClass来定义它 的样式:

HtmlElement parent = HtmlPage.Document.GetElementById ("parent");
HtmlElement button = HtmlPage.Document.CreateElement ("a");
button.SetAttribute("innerText","改变Silverlight中的颜 色");
button.SetAttribute("href","#");
button.CssClass = "newstyle";
parent.AppendChild(button);

为a元素附加onclick事件,HtmlElement提供了AttachEvent方法用来附加事 件,使用泛型的EventHandler,在a元素单单击时我们改变Silverlight中的矩形 填充色和边框。

button.AttachEvent("onclick",new EventHandler<HtmlEventArgs>(button_Click));
void button_Click(object sender,HtmlEventArgs E)
{
  result.stroke = new SolidColorBrush(Colors.black);
  result.Fill = new SolidColorBrush(Colors.Green);
  result.strokeThickness = 2;
}

private void addButton_Click(object sender,RoutedEventArgs E)
{
  HtmlElement parent = HtmlPage.Document.GetElementById ("parent");
  HtmlElement button = HtmlPage.Document.CreateElement("a");
  button.SetAttribute ("innerText","改变Silverlight中的颜色");
  button.SetAttribute ("href","#");
  button.CssClass = "newstyle";
   parent.AppendChild(button);
  button.AttachEvent("onclick",new EventHandler<HtmlEventArgs>(button_Click));
}
void button_Click(object sender,255); orphans:2; widows:2"> 运行一下看看效果如何,起始界面

学Silverlight 2系列(20):如何在Silverlight中与HTML DOM交互(下)

添加新元素a

学Silverlight 2系列(20):如何在Silverlight中与HTML DOM交互(下)

单击改变矩形的背景颜色

学Silverlight 2系列(20):如何在Silverlight中与HTML DOM交互(下)

HtmlElement也提供了DetachEvent方法,可以取消注册事件。

结束语

本文简单介绍了如何在Silverlight中添加和移除DOM元素,以及为DOM元素添 加、取消事件处理程序。

大佬总结

以上是大佬教程为你收集整理的学Silverlight 2系列(20):如何在Silverlight中与HTML DOM交互(下)全部内容,希望文章能够帮你解决学Silverlight 2系列(20):如何在Silverlight中与HTML DOM交互(下)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。