2012-01-28 4 views
0

私は30-30kbのサイズの30以上の大きなXMLファイルを持っていますが、そこからいくつかの情報をDataGridの1つのデータソースとして表示する必要があります。バインディング1(または2または3ファイル)ファイルをDataGridの1行にするにはどうすればよいですか?例えば多くのXMLファイルをDatagridの行にバインド

、この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> 

、別のファイルのこの部分:

<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> 

は1つのデータグリッドに表示されている必要があります

<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> 
+0

私はあなたが尋ねていることはやや不明だと思います。あなたは 'DataGrid'の1行に正確にバインドしていますか?すべてのファイルを1つのソースとして表示する場合は、そのマッピングがどのように見えるかを明確にする必要があります。 – mydogisbox

+0

あなたは正しいです。元の質問を変更しましたが、今はより明確になることを願っています。 – user1175338

+0

私はxmlをあまり使っていませんが、バインドする前にファイルを単一の構造にマージする必要があるようです。 – mydogisbox

答えて

0

まず、次のような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; } 
} 

は、その後、あなたのデータグリッドのための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); 
} 

マイリストはあなたのXMLSから読み込まれ、すべてのデータが含まれているコレクションです。明らかに、この例では、私はデータサンプルをそれに設定します。あなたはそれを埋めるためにコードを提供する必要があります。

その後、DataGridを作成する必要があります。私はそれをWindowsに入れ、コードは:

<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> 
関連する問題