我有一个XML文件,如下所示。我计划将XML文件的内容绑定到WPF中的Datagrid。WPF,XML Datagrid绑定
<?xml version="1.0" encoding="utf-8"?>
<ProductData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<PurchaseOrderLine>
<ProductItem>
<LineNumber>1</LineNumber>
</ProductItem>
</PurchaseOrderLine>
所以我开发了两个简单的类PurchaseOrderLine和ProductItem如下
class PurchaseOrderLine {
public ProductItem productItem { get; set; }}
class ProductItem{
public int LineNumber { get; set; }}
后,当我试图访问它在XAML类似下面,我不能让LineNumber上的细节,这是为什么那?我错过了吗?其实请让我知道如何访问xml中的子元素?
<DataGrid AutoGenerateColumns="False" Name="dataGrid" ItemsSource="{Binding Path=Elements[PurchaseOrderLine]}" Height="214" Width="657">
<DataGrid.Columns>
<DataGridTextColumn Header="Line Number" Binding="{Binding Path = Element[ProductItem.LineNumber].Value}" />
</DataGrid.Columns>
我加载XML文件动态
var productList = XElement.Load(FileName);
this.dataGrid.DataContext = productList;
你有没有在你的第二个结合(即“productItem”)尝试小写“ProductItem”? XAML对我的回忆是大小写敏感的。在输出窗口中是否有任何System.Data异常? – BradleyDotNET
@ LordTakkera,它是访问像ProductItem.LineNumber这样的元素的正确方法。因为我也尝试过productItem.LineNumber。它不起作用 – RobinAtTech
通常这就是你会做的(用小写字母给你的属性名称)。我不确定为什么它会读取任何不同的XML文档。你有没有尝试从第二个绑定中删除“元素”?如果该对象已经是数据上下文,那么它可能不再是XElement,因此不需要这部分。 System.Data例外可以帮助你在这里指导你。 – BradleyDotNET