Wpf 将许多XML文件绑定到Datagrid的行
我有30多个大小为20-30KB的大型XML文件,其中一些信息必须作为一个数据源显示在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
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,但看起来在绑定文件之前需要将文件合并到一个结构中。