【发布时间】:2014-06-11 23:02:07
【问题描述】:
我一直在努力学习 Visaul C#。最近,我一直专注于 WPF。这是我一直在研究的教程的链接:
http://msdn.microsoft.com/en-us/library/vstudio/ms752299(v=vs.110).aspx
如果您选择某人的姓名并单击“查看”按钮,该应用程序应允许您查看某人的费用。不幸的是,费用没有显示。我不断收到此错误消息:
System.Windows.Data Error: 50 : XmlDataProvider has inline XML that does not explicitly set its XmlNamespace (xmlns="").
我认为 xmlns 需要留空,以便应用程序可以向下导航 XAML。这是我制作的 Grid 资源的代码:
<Grid.Resources>
<!-- Expense Report Data -->
<XmlDataProvider x:Key="ExpenseDataSource" XPath="Expenses">
<x:XData>
<Expenses xmlns="">
<Person Name="Mike" Department="Legal">
<Expense ExpenseType="Lunch" ExpenseAmount="50" />
<Expense ExpenseType="Transportation" ExpenseAmount="50" />
</Person>
<Person Name="Lisa" Department="Marketing">
<Expense ExpenseType="Document Printing" ExpenseAmount="50" />
<Expense ExpenseType="Gift" ExpenseAmount="125" />
</Person>
<Person Name="John" Department="Engineering">
<Expense ExpenseType="Magazine Subscription" ExpenseAmount="50" />
<Expense ExpenseType="New Machine" ExpenseAmount="600" />
<Expense ExpenseType="Software" ExpenseAmount="500" />
</Person>
<Person Name="Mary" Department="Finance">
<Expense ExpenseType="Dinner" ExpenseAmount="100" />
</Person>
</Expenses>
</x:XData>
</XmlDataProvider>
<!-- Name item template -->
<DataTemplate x:Key="nameItemTemplate">
<Label Content="{Binding XPath=@Name}"/>
</DataTemplate>
</Grid.Resources>
谁能给我任何关于出了什么问题的提示?
谢谢
【问题讨论】:
-
您需要使用 XmlNamespaceManager。来自 WPF 4.5 Unleashed 一书“只要 XPath 值没有前缀,空的命名空间就被假定为命名空间 URI。因此,即使您的 XML 源具有默认命名空间,您也必须分配一个 XmlNamespaceManager 才能使查询工作”。