Wpf 数据网格绑定xaml

Wpf 数据网格绑定xaml,wpf,data-binding,datagrid,expression-blend,Wpf,Data Binding,Datagrid,Expression Blend,我正在尝试将datagrid绑定到xml: <StackPanel.DataContext> <XmlDataProvider Source="bill.xml" XPath="/Foods/Food"/> </StackPanel.DataContext> <DataGrid Width="190" Height="200" HorizontalAlignment="Center" VerticalAlignment="Top" Foreground

我正在尝试将datagrid绑定到xml:

<StackPanel.DataContext>
<XmlDataProvider Source="bill.xml" XPath="/Foods/Food"/>
</StackPanel.DataContext>

<DataGrid Width="190" Height="200" HorizontalAlignment="Center" VerticalAlignment="Top" Foreground="Black" ItemsSource="{Binding}">

<DataGrid.Columns>
<DataGridTextColumn Header="Quantity" FontSize="12" Binding="{Binding XPath=/Foods/Food/Quantity}" />
<DataGridTextColumn Header="Item" FontSize="12" Binding="{Binding XPath=/Foods/Food/Item}"/>
<DataGridTextColumn Header="Price" FontSize="12" Binding="{Binding XPath=/Foods/Food/Price}"/>
<DataGridTextColumn Header="P" FontSize="12" Binding="{Binding XPath=/Foods/Food/P}"/>
<DataGridTextColumn Header="C" FontSize="12" Binding="{Binding XPath=/Foods/Food/C}"/>          
</DataGrid.Columns>

</DataGrid>

XML:


1.
小咖啡
0.95

N

1. 1. 奶酪蛋糕 4.50

N

1. 1. 意大利面 13.50

N

1.
DataGrid没有显示任何内容


我遗漏了什么吗?

您的
XmlDataSource
已经占用了所有节点
/Foods/Food
,因此您不需要在绑定中再次指定
XPath
的那部分。尝试删除它,因此:

<DataGridTextColumn Header="Quantity" FontSize="12" Binding="{Binding XPath=Quantity}" />

我也有同样的问题。Add xmlns=“”为我解决了这个问题

您可能需要将xmlns=”“添加到食物中

而不是

使用


好的,现在它在设计视图中显示所有值,但当我运行应用程序时,它是空的。我是否应该在代码隐藏中添加代码,比如:DataGrid.Bind()?数据显示在设计时,而不是运行时??奇怪的你一定是在代码隐藏中做了一些错误的事情来中和数据源。实际上,我在代码隐藏中没有做任何事情,我只是使用Expression Blend进行设计。这可能是因为可执行文件在运行时找不到xml文件的问题,因为它是从
bin\debug
文件夹中运行的,但在设计视图中,它具有项目的当前目录(xml文件所在的目录)。
<DataGridTextColumn Header="Quantity" FontSize="12" Binding="{Binding XPath=Quantity}" />