【问题标题】:WPF DataGrid with XmlDataProvider simple exampleWPF DataGrid 与 XmlDataProvider 简单示例
【发布时间】:2011-03-18 14:48:43
【问题描述】:

经过几个小时试图找到一些工作样本后,我决定在这里试试运气。我是 WPF 的新手,但随着时间的推移,事情应该会变得更容易......

我正在尝试让 DataGrid 显示我拥有的 XML 文件。就是这样。

我的应用程序中有cars.xml

  <cars>
    <car type="Ford" size="4" />
    <car type="Mercedes" size="2" />
    <car type="BMW" size="1" />
  </cars>

现在我有一个 UserControl,它有一个 DataGrid(在 VS2008 上使用 .NET 3.5 SP1 和 CodePlex ToolKit):

   <dg:DataGrid ItemsSource="{Binding cars}" />

据我了解,由于它具有 AutoColumn,它应该向我显示带有汽车的网格……但事实并非如此。 我想我的错误与绑定有关。我在 WPF 中没有这么好的绑定想法,但我正在学习。那么如何正确地将 ItemSource 指向我的 cars.xml?

10 倍。

【问题讨论】:

    标签: wpf data-binding datagrid binding wpfdatagrid


    【解决方案1】:

    您必须将您的 xml 文件指定为网格或窗口的资源。例如:

    <Window.Resources>
    <XmlDataProvider XmlNamespaceManager="{StaticResource ns}" x:Key="rss" Source="http://weather.yahooapis.com/forecastrss?p=RSXX1410&amp;u=c" XPath="/rss/channel" />
    ...
    

    静态资源 ns - 它是不同前缀的命名空间 - 如果你的 xml 中有它:

    <XmlNamespaceMappingCollection x:Key="ns">
            <XmlNamespaceMapping Prefix="yweather" Uri="http://xml.weather.yahoo.com/ns/rss/1.0" />
            <XmlNamespaceMapping Prefix="geo" Uri="http://www.w3.org/2003/01/geo/wgs84_pos#" />
        </XmlNamespaceMappingCollection>
    ...
    </Window.Resources>
    

    现在您可以将您的 xaml 元素绑定到您的 xml 元素:

    <Grid DataContext="{Binding Source={StaticResource rss}, XPath=item}">
         <Image  Width="200" Height="180" Source="{Binding XPath=yweather:condition/@code, Converter={StaticResource WeatherCodeToImageConverter}}" />
    </Grid>
    

    就是这样。

    【讨论】:

      猜你喜欢
      • 2012-12-16
      • 2010-12-03
      • 1970-01-01
      • 2011-06-07
      • 2016-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多