几个小时后,我试图找到一些工作样本,我决定在这里试试运气。我是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倍。
答案 0 :(得分:1)
您必须将xml文件指定为网格或窗口的资源。例如:
<Window.Resources>
<XmlDataProvider XmlNamespaceManager="{StaticResource ns}" x:Key="rss" Source="http://weather.yahooapis.com/forecastrss?p=RSXX1410&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>
多数民众赞成。