【问题标题】:Loading DataGrid from XML data file从 XML 数据文件加载 DataGrid
【发布时间】:2017-11-13 21:36:36
【问题描述】:

我在从 WPF 应用程序中的 XML 文件加载数据时遇到问题。

XAML:

                    <DataGrid Name="dataGrid" ItemsSource="{Binding Path=Elements[Person]}" AutoGenerateColumns="False" HorizontalAlignment="Left" Height="331" Margin="12,10,-1.774,0" VerticalAlignment="Top" Width="834" FontSize="18" FontFamily="SimSun">
                    <DataGrid.Columns>
                        <DataGridCheckBoxColumn Header="Name" Binding="{Binding Path=Element[name].Value}"  />
                        <DataGridCheckBoxColumn Header="Surname" Binding="{Binding Path=Element[surname].Value}"  />
                        <DataGridCheckBoxColumn Header="Date born" Binding="{Binding Path=Element[dateBorn].Value}" />
                    </DataGrid.Columns>
                </DataGrid>

XML 文件:

<Persons> 
<Person>
<name>Test1</name> 
<surname>Test11</surname> 
<dateBorn>02.12.1990</dateBorn>
</Person>

<Person>
<name>Test2</name> 
<surname>Test22</surname> 
<dateBorn>10.12.1991</dateBorn>
</Person>

<Person>
<name>Test3</name> 
<surname>Test3</surname> 
<dateBorn>09.12.1992</dateBorn>
</Person>

我的代码:

        var peopleList = XElement.Load(dataBaseURL);
        dataGrid1.DataContext = peopleList;

我得到空单元格并从&lt;person&gt; &lt;/person&gt; 标签加载数据。

【问题讨论】:

  • 您的peopleList 得到任何结果了吗?您的 xml 文件是否可能无效。看来您缺少像 &lt;?xml version="1.0" encoding="UTF-8"?&gt; 这样的标题和末尾的 &lt;/Persons&gt; 结束标记。

标签: c# xml wpf


【解决方案1】:

您的 ItemsSource 看起来正确,绑定也是如此。

试试dataGrid1.DataContext = peopleList.Root;

【讨论】:

    【解决方案2】:

    应该这样更正绑定:

    <DataGrid Name="dataGrid" ItemsSource="{Binding}" AutoGenerateColumns="False" HorizontalAlignment="Left" Height="331" Margin="12,10,-1.774,0" VerticalAlignment="Top" Width="834" FontSize="18" FontFamily="SimSun">
                    <DataGrid.Columns>
                        <DataGridCheckBoxColumn Header="Name" Binding="{Binding name}"  />
                        <DataGridCheckBoxColumn Header="Surname" Binding="{Binding surname}"  />
                        <DataGridCheckBoxColumn Header="Date born" Binding="{Binding dateBorn}" />
                    </DataGrid.Columns>
                </DataGrid>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-29
      • 2012-02-10
      • 2015-06-26
      • 1970-01-01
      • 2019-01-02
      • 1970-01-01
      相关资源
      最近更新 更多