科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件在Avalon中建立数据识别的应用程序

在Avalon中建立数据识别的应用程序

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文的示例项目使用XML数据源演示了在Windows显示基础中数据绑定是如何工作的

作者:陶刚编译 来源:天极网 2007年11月4日

关键字: Avalon 数据识别 应用程序

  • 评论
  • 分享微博
  • 分享邮件
在WPF(Windows Presentation Foundation)中,可以将UI元素绑定在多种数据源上,其中包括XML数据、Web服务、数据库等等。本文的示例项目使用XML数据源演示了在Windows显示基础(Presentation Foundation)中数据绑定是如何工作的。

  在WPF中你可以把UI(用户界面)元素绑定到多种数据源,包括XML数据、Web服务、数据库等等。数据绑定是WPF的一个很大的话题;讨论数据绑定的细节和裂隙则超出了本文的范围。为了简单,我将演示如何把一个典型的WPF应用程序绑定到XML数据源,并解释其后台的细节信息。为了让这个例子有实际用处,我将建立一个简单的RSS阅读器,它接受RSS XML文档,并使用数据绑定显示文档中的多个数据项。图1显式了完整的应用程序。


图1:Avalon RSS阅读器应用程序。

  在这个例子中,使用DevX新文章RSS资源生成示例应用程序的数据。

  绑定到静态的XML源

  为了建立本文中的示例应用程序,你必须有Visual Studio 2005 Beta 2,并安装WinFX SDK。请使用Visual Studio 2005 Beta 2建立一个新的AvalonNavigation应用程序(图2所示),应用程序的名称叫做DataBinding。


图2:建立一个新的AvalonNavigation应用程序。

  像通常一样新建Visual Studio项目,选择AvalonNavigation类型。

  在默认的Page1.xaml中,首先需要用相关的XAML元素来填充页面,建立应用程序UI。

  首先,给页面添加一个<DockPanel>元素,把它的背景色设置为Cornsilk:

<Page x:Class="Page1"
 xmlns="http://schemas.microsoft.com/winfx/avalon/2005"
 xmlns:x="http://schemas.microsoft.com/winfx/xaml/2005"

<DockPanel
 xmlns="http://schemas.microsoft.com/winfx/avalon/2005"
 xmlns:x="http://schemas.microsoft.com/winfx/xaml/2005"
 Background="Cornsilk"

 给页面添加一个<DockPanel.Resources>元素(见列表1)。<DockPanel.Resources>元素允许你定义XML数据源(就是大家所知道的XML数据岛)供这个应用程序使用。在例子中,XML源是一个RSS文档。其XPath属性被设置为"/rss/channel",它是RSS文档树的起始节点,这样你就可以简单地使用相对路径来引用子元素了。该XML数据源的键(key)是RSSData。代码如列表1所示。

  列表 1: <DockPanel.Resources>

  <DockPanel.Resources>元素允许你定义一个XML数据源供这个应用程序使用。

<DockPanel.Resources>
 <XmlDataSource x:Key="RSSData" XPath="/rss/channel">
 <rss version="2.0" xmlns="">
 <channel>
  <title>DevX: Latest Published Articles</title>
  <link>http://www.devx.com</link>
  <description>Latest DevX Content</description>
  <language>en-us</language>
  <copyright>Copyright 2002 DevX</copyright>
  <docs>http://backend.userland.com/rss</docs>
  <lastBuildDate>Sun, 28 Aug 2005 23:36:13 PST</lastBuildDate>
  <image>
   <title>DevX</title>
   <url>http://services.devx.com/outgoing/devxwire.gif</url>
   <link>http://www.DevX.com</link>
  </image>
  <item>
   <title>Discover the Eclipse Modeling Framework (EMF) and Its Dynamic Capabilities</title>
   <description>Given a model, EMF can generate Java source code that will allow
you to create, query, update, serialize, deserialize, validate, and track changes to instances of your
models. EMF provides an efficient reflective API and allows you to work with dynamic, non-generated,
models.</description>
   <link>http://www.devx.com/Java/Article/29093?trk=DXRSS_LATEST</link>
   <author> (Dave Steinberg) editorial@devx.com</author>
   <pubDate>Fri, 26 Aug 2005 19:43:34 PST</pubDate>
  </item>

  <item>
   <title>...</title>
   <description>...</description>
   <link>...</link>
   <author>...</author>
   <pubDate>...</pubDate>
  </item>

  <item>
   <title>...</title>
   <description>...</description>
   <link>...</link>
   <author>...</author>
   <pubDate>...</pubDate>
  </item>

 </channel>
</rss>
</XmlDataSource>

  下一步,给<DockPanel.Resources>元素添加一个<DataTemplate>元素。我们使用<DataTemplate>元素把XML数据岛的内容绑定到一个控件(例子中是TextBlock控件)。TextBlock数据模板被绑定到(XML树的)<title>元素,我们给它命名为RSSTemplate:

<DataTemplate x:Key="RSSTemplate">
 <TextBlock FontSize="Small">
 <TextBlock.TextContent>
 <Binding XPath="title"/>
</TextBlock.TextContent>
</TextBlock>
</DataTemplate>
</DockPanel.Resources>

  下一步,在页面上添加一个标题("Titles"),同时在XML数据岛(图3所示)中建立一个列表框控件来显示所有的标题(封装在<title>元素内)。请注意,我们使用ItemsSource属性来指定数据源(Binding Source={StaticResource RSSData}是简洁的绑定表达式)和开始搜索的节点(XPath=item)。


图3:给Data控件绑定XML数据

  在应用程序代码中RSS资源的XML被绑定到Data控件。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章