Wpf 数据网格绑定xaml
我正在尝试将datagrid绑定到xml: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
<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}" />