Wpf 将许多XML文件绑定到Datagrid的行

Wpf 将许多XML文件绑定到Datagrid的行,wpf,datagrid,rows,Wpf,Datagrid,Rows,我有30多个大小为20-30KB的大型XML文件,其中一些信息必须作为一个数据源显示在DataGrid中。如何将1(或2或3个文件)文件绑定到数据网格的1行 例如,XML文件的这一部分: <NameId>4366527</NameId> <TargetType>2</TargetType> <TargetCost>21</TargetCost> <Tag>11</Tag> <SupplyingR

我有30多个大小为20-30KB的大型XML文件,其中一些信息必须作为一个数据源显示在
DataGrid
中。如何将1(或2或3个文件)文件绑定到数据网格的1行

例如,XML文件的这一部分:

<NameId>4366527</NameId>
<TargetType>2</TargetType>
<TargetCost>21</TargetCost>
<Tag>11</Tag>
<SupplyingRate>100</SupplyingRate>
<SupplyType>0</SupplyType>
<Transparency>0</Transparency>
<Passability>100</Passability>
<HumanPassability>100</HumanPassability>
4366527
2.
21
11
100
0
0
100
100
另一个文件的这部分:

<NameId>6591314</NameId>
<TargetType>2</TargetType>
<TargetCost>26</TargetCost>
<Tag>11</Tag>
<SupplyingRate>100</SupplyingRate>
<SupplyType>0</SupplyType>
<Transparency>0</Transparency>
<Passability>100</Passability>
<HumanPassability>100</HumanPassability>
6591314
2.
26
11
100
0
0
100
100
必须在一个数据网格中显示:

<dg:DataGrid Grid.Row="1" ItemsSource="{Binding Source={StaticResource Orders}}"
         AutoGenerateColumns="True" RowEditEnding="DataGrid_RowEditEnding">
     <dg:DataGrid.Columns>
         <dg:DataGridTextColumn Header="NameId" />
         <dg:DataGridTextColumn Header="TargetType" />
         <dg:DataGridTextColumn Header="TargetCost" />
         <dg:DataGridTextColumn Header="Tag" />
         <dg:DataGridTextColumn Header="SupplyingRate" />
         <dg:DataGridTextColumn Header="SupplyType" />
         <dg:DataGridTextColumn Header="Transparency" />
         <dg:DataGridTextColumn Header="Passability" />
         <dg:DataGridTextColumn Header="HumanPassability" />
     </dg:DataGrid.Columns>
</dg:DataGrid>

您要做的第一件事是创建一个包含XML数据的类,如下所示:

public class MyData
{
    public int NameId { get; set; }
    public int TargetType { get; set; }
    public int TargetCost { get; set; }
    public int Tag { get; set; }
    public int SupplyingRate { get; set; }
    public int SupplyType { get; set; }
    public int Transparency { get; set; }
    public int Passability { get; set; }
    public int HumanPassability { get; set; }
}
然后需要为DataGrid创建ViewModel,例如:

public ObservableCollection<MyData> MyList { get; set; }

public ViewModel()
{
    MyList = new ObservableCollection<MyData>();

    MyData data = new MyData()
    {
        NameId = 4366527,
        TargetType = 2,
        TargetCost = 21,
        Tag = 11,
        SupplyingRate = 100,
        SupplyType = 0,
        Transparency = 0,
        Passability = 100,
        HumanPassability = 100
    };
    MyList.Add(data);

    data = new MyData()
    {
        NameId = 6591314,
        TargetType = 2,
        TargetCost = 26,
        Tag = 11,
        SupplyingRate = 100,
        SupplyType = 0,
        Transparency = 0,
        Passability = 100,
        HumanPassability = 100
    };
    MyList.Add(data);
}
publicobservableCollection MyList{get;set;}
公共视图模型()
{
MyList=新的ObservableCollection();
MyData数据=新的MyData()
{
NameId=4366527,
TargetType=2,
目标成本=21,
标签=11,
SupplyingRate=100,
SupplyType=0,
透明度=0,
通过率=100,
人的通行能力=100
};
添加(数据);
数据=新的MyData()
{
NameId=6591314,
TargetType=2,
TargetCost=26,
标签=11,
SupplyingRate=100,
SupplyType=0,
透明度=0,
通过率=100,
人的通行能力=100
};
添加(数据);
}
MyList是一个集合,其中包含从XML中读取的所有数据。显然,在这个例子中,我用数据样本填充它。您必须提供代码来填充它

之后,您必须创建数据网格。我把它放在一个窗口中,代码是:

<Window x:Class="Temp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525"
        xmlns:local="clr-namespace:Temp">
    <Window.DataContext>
        <local:ViewModel />
    </Window.DataContext>
    <Grid>
        <DataGrid ItemsSource="{Binding Path=MyList}"
                  AutoGenerateColumns="True">
        </DataGrid>
    </Grid>
</Window>


我认为您的问题有点不清楚。您到底要绑定到一行
数据网格
?如果您的意思是希望所有文件都显示为一个源,那么您需要澄清映射应该是什么样子。您是对的。我改变了原来的问题,希望现在能更清楚一些。我不太会使用xml,但看起来在绑定文件之前需要将文件合并到一个结构中。