科技行者

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

知识库

知识库 安全导航

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

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

  • 扫一扫
    分享文章到微信

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

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

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

关键字:

  • 评论
  • 分享微博
  • 分享邮件
你可以使用ItemTemplate属性给控件({StaticResource RSSTemplate})应用一个模板。最后,当列表框控件中选择的项发生改变的时候,会调用TitleChanged事件(它是在SelectionChanged属性中指定的):

<StackPanel>
<TextBlock DockPanel.Dock="Left"
 FontSize="18"
 FontWeight="Bold" Margin="10"
 HorizontalAlignment="Left">
 Titles
</TextBlock>

<ListBox HorizontalAlignment="Left"
 Margin="10,0,10,10"
 Width="300"
 Background="LightYellow"
 ItemsSource="{Binding Source={StaticResource RSSData}, XPath=item}"
 ItemTemplate="{StaticResource RSSTemplate}"
 SelectionChanged="TitleChanged" />
</StackPanel>

  当我们选中列表框控件中的数据项的时候,应用程序在页面右边显式该数据项的描述信息。在下一步中,你希望显示标题("Description"),它后面紧跟着<DockPanel>元素,这个元素又包含了一个绑定到描述元素({Binding XPath=description})的<TextBlock>元素。第二个<DockPanel>元素用于显示与选中数据项相关的URL({Binding XPath=link}),如图4所示:

<StackPanel>
<TextBlock DockPanel.Dock="Left"
 FontSize="18"
 FontWeight="Bold" Margin="10"
 HorizontalAlignment="Left">
 Description
</TextBlock>

<DockPanel HorizontalAlignment="Left" Name="dpDescription" Width="500">

<TextBlock Name="txtDescription"
  DockPanel.Dock="Top"
  FontSize="Small"
  HorizontalAlignment="Left"
  TextWrap="wrap"
  Margin="10,0,10,10"
  Background="Black"
  Foreground="White"
  TextContent="{Binding XPath=description}"
/>
</DockPanel>

<DockPanel HorizontalAlignment="Left"
  Name="dpURL"
  Width="500"


<TextBlock Name="txtURL"
  DockPanel.Dock="Top"
  FontSize="Small"
  HorizontalAlignment="Left"
  TextWrap="wrap"
  TextContent="{Binding XPath=link}"
  Margin="10,10,10,10"
  Foreground="Blue"/>
</DockPanel>

</StackPanel>
</DockPanel>
</Page>


图4:显示详细描述信息。被选中的RSS项的描述信息和

  链接被绑定到TextBlock控件。当用户在列表框中选择项目的时候它们会改变。

  最后,你需要完善前面提到的TitleChanged()事件。在这个事件中,当用户选择列表框控件中的某个数据项的时候,你需要改变DataContext属性的dpDescription和dpURL <DockPanel>元素:

Partial Public Class Page1
Inherits Page

Private Sub TitleChanged(ByVal sender As Object, _
ByVal args As SelectionChangedEventArgs)
 Dim lstbox As ListBox = sender
 If lstbox.SelectedItem IsNot Nothing Then
  dpDescription.DataContext = lstbox.SelectedItem
  dpURL.DataContext = lstbox.SelectedItem
 End If
End Sub

End Class

  我们已经完成了!按F5测试应用程序。RSS XML文档中的数据项都显示在列表框控件中。你可以点击列表框控件中的数据项,相应的描述信息和URL就会显示在页面右侧(图1所示)。

  绑定到外部的XML源

  前面的例子演示了如何把XML数据岛绑定到WPF应用程序的多个控件上。在应用程序内使用XML数据岛引起的一个问题是,对XML数据的任何修改都要求修改/编译应用程序。更好的方法是把XML数据存储在外部文件中,在应用程序中引用该文件。例如,你可以把XML数据存储在RSS.xml文件中,接着可以在应用程序中引用它:

<XmlDataSource x:Key="RSSData" Source="RSS.xml" XPath="/rss/channel" />

  动态地载入XML源

  尽管你可以引用外部的XML文件,但是更好的办法可能是从URL动态地载入XML文档。在这个例子中,你可以修改<XmlDataSource>元素:

<XmlDataSource x:Key="RSSData" Source="http://services.devx.com/outgoing/devxfeed.xml" XPath="/rss/channel" />

  你可以使用下面一些URL试一试,可以发现每次都载入了不同的RSS数据项:

  · http://services.devx.com/outgoing/dotnet.xml

  · http://services.devx.com/outgoing/wirelessfeed.xml

  · http://services.devx.com/outgoing/enterprisefeed.xml

  · http://services.devx.com/outgoing/xmlfeed.xml

  进一步改善

  在本文中你看到了在WPF中数据绑定是如何进行的。如果你希望进一步改善示例应用程序,可以考虑修改应用程序,允许用户从URL列表中选择一个(代替手动地修改XML文档源)。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

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

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