专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Flash教程 » silverlight:学Silverlight 2系列(20):如何在Silverlight中和HTML DOM交互(下) »正文

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

来源: 发布时间:星期五, 2009年1月23日 浏览:9次 评论:0
  Silverlight 2 Beta 1版本发布了无论从Runtime还是Tools都给我们带来了很多惊喜如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython对JSON、Web Service、WCF以及Sockets支持等系列新特性步学Silverlight 2系列文章将从Silverlight 2基础知识、数据和通信、自定义Control控件、动画、图形图像等几个方面带您快速进入Silverlight 2开发

  Silverlight中内置了对于HTML、客户端脚本等支持本文为如何在Silverlight 2中和HTML DOM交互第 2部分在第部分中主要介绍了如何访问和修改已有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);
}
  运行后界面上有 3个<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>
  并且定义两个样式其中style我们将在Silverlight中为新添加a元素使用

#parent
{
  background:#FCDFB3;
  border:solid 1px #FF9900;
  width:500px;
  height:100px;
  margin-bottom:20px;  
}
.style
{
  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 = "style";
parent.AppendChild(button);
  为a元素附加onclick事件HtmlElement提供了AttachEvent思路方法用来附加事件使用泛型EventHandler在a元素单单击时我们改变Silverlight中矩形填充色和边框

button.AttachEvent("onclick", EventHandler<HtmlEventArgs>(button_Click));
void button_Click(object sender, HtmlEventArgs e)
{
  result.Stroke = SolidColorBrush(Colors.Black);
  result.Fill = 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 = "style";
  parent.AppendChild(button);
  button.AttachEvent("onclick", EventHandler<HtmlEventArgs>(button_Click));
}
void button_Click(object sender, HtmlEventArgs e)
{
  result.Stroke = SolidColorBrush(Colors.Black);
  result.Fill = SolidColorBrush(Colors.Green);
  result.StrokeThickness = 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元素添加、取消事件处理



0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: