WPF DataGrid与XmlDataProvider的简单示例

时间:2010-07-20 18:38:53

标签: wpf data-binding datagrid binding wpfdatagrid

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

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

我的应用程序中有cars.xml

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

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

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

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

10倍。

1 个答案:

答案 0 :(得分: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 -it是不同前缀的命名空间 - 如果你在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>

多数民众赞成。