首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF DataBind DataGrid to XML

WPF DataBind DataGrid to XML
EN

Stack Overflow用户
提问于 2014-04-01 22:35:44
回答 1查看 666关注 0票数 1

在使用XML填充DataGrid时遇到问题。

下面是XML字符串的一个示例

代码语言:javascript
复制
<Document docID="Uplift">
<DocHeader>
<DocTitle>Hourly Uplift and Intertie Offer Guarantee Estimates Report</DocTitle>
<DocRevision>1</DocRevision>
<DocConfidentiality>
  <DocConfClass>PUB</DocConfClass>
</DocConfidentiality>
<CreatedAt>2014-04-01T16:03:23</CreatedAt>
</DocHeader>
<DocBody>
<DeliveryDate>2014-04-01</DeliveryDate>
<HourlyUplift>
  <DeliveryHour>1</DeliveryHour>
  <Uplift>1</Uplift>
  <IOG>0.02</IOG>
</HourlyUplift>
<HourlyUplift>
  <DeliveryHour>2</DeliveryHour>
  <Uplift>0</Uplift>
  <IOG>0</IOG>
</HourlyUplift>

下面是如何将xml绑定到XAML中的DataGrid中

代码语言:javascript
复制
<DataGrid x:Name="LibraryView" ItemsSource="{Binding Path=Element[DocBody].Elements[HourlyUplift]}" Margin="0,33,0,0">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Hour" Binding="{Binding Path=Element[DeliveryHour].Value}"/>
        </DataGrid.Columns>
    </DataGrid>

下面是我如何在代码中设置xElement的方法

代码语言:javascript
复制
var List = XElement.Parse(xml);
        this.LibraryView.DataContext = List;

问题是当我去运行代码时,DataGrid是空的。有人知道我哪里出错了吗?

EN

回答 1

Stack Overflow用户

发布于 2014-04-02 02:34:49

在使用Xml DataContext时,更容易使用XPath属性而不是路径:

代码语言:javascript
复制
<DataGrid x:Name="LibraryView" Margin="0,33,0,0"
          AutoGenerateColumns="False"
          ItemsSource="{Binding XPath=Document/DocBody/HourlyUplift}" >
    <DataGrid.Columns>
        <DataGridTextColumn Header="Hour" Binding="{Binding XPath=DeliveryHour}"/>
    </DataGrid.Columns>
</DataGrid>

注意,斜杠(/)在XPath中的意思是“直接子”。其他一些基本的XPath符号是(//)表示后代,(@)表示XML属性。

在代码隐藏中,使用XmlDocument而不是XElement

代码语言:javascript
复制
var List = new XmlDocument();
List.LoadXml(xml);
this.LibraryView.DataContext = List;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22798242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档