正在将XML绑定到wpf数据网格

本文关键字:wpf 数据 数据网 网格 绑定 XML | 更新日期: 2023-09-27 18:20:16

我有一个WPF数据网格和一个xmlString,绑定它时遇到问题。

我已经阅读了这篇文章,并遵循了说明,但无法使其发挥作用。

我看到了标题栏,但里面没有数据。有什么想法吗?

我应该说,当窗口加载后单击按钮时,会调用后面的代码。

这是我的XAML

<DataGrid x:Name="dtgMain" ItemsSource="{Binding Path=Elements[panel]}">
    <DataGrid.Columns>
        <DataGridTextColumn Header="PanelCode" Binding="{Binding Path=Element[panelCode].InnerText}"/>
    </DataGrid.Columns>
</DataGrid>

这是我的代码隐藏

System.IO.StringReader reader = new System.IO.StringReader(response);
            XElement results = XElement.Load(reader);
            dtgMain.DataContext = results;

这是我的xml

<data>
  <load count="2">true
    <panel index="10">
      <panelCode>100072
      </panelCode>
      <panelName>COM0100072*A
      </panelName>
      <panelPart>100072
      </panelPart>
      <numberLayers>4
      </numberLayers>
      <panelSize.display>21.0 x 24.0
      </panelSize.display>
      <lastEdited.display>16/11/2011 17:13:39
      </lastEdited.display>
      <panelStatus.display>Measurements Stored
      </panelStatus.display>
      <lastEditor>admin
      </lastEditor>
      <numberBonds>1
      </numberBonds>
      <numberSubComponents>0
      </numberSubComponents>
    </panel>
    <panel index="11">
      <panelCode>100352
      </panelCode>
      <panelName>COM0100352*C
      </panelName>
      <panelPart>100352
      </panelPart>
      <numberLayers>8
      </numberLayers>
      <panelSize.display>18.0 x 24.0
      </panelSize.display>
      <lastEdited.display>16/11/2011 17:18:47
      </lastEdited.display>
      <panelStatus.display>Measurements Stored
      </panelStatus.display>
      <lastEditor>admin
      </lastEditor>
      <numberBonds>1
      </numberBonds>
      <numberSubComponents>0
      </numberSubComponents>
    </panel>
  </load>
</data>

正在将XML绑定到wpf数据网格

XElement没有'InnerText'属性。

你试过使用吗

Binding="{Binding Path=Element[panelCode].Value}"

相反?

编辑:

我刚刚用一个示例项目进行了测试,除了使用.Value之外,唯一的其他更改是将DataGrid的ItemsSource更改为包含"加载"节点:

ItemsSource="{Binding Path=Element[load].Elements[panel]}"

因此,您的数据网格将如下所示:

<DataGrid x:Name="dtgMain" ItemsSource="{Binding Path=Element[load].Elements[panel]}">
    <DataGrid.Columns>
       <DataGridTextColumn Header="PanelCode" Binding="{Binding Path=Element[panelCode].Value}"/>
    </DataGrid.Columns>
</DataGrid>