Привязка многих файлов XML к строкам Datagrid - PullRequest
0 голосов
/ 28 января 2012

У меня есть более 30 больших XML-файлов размером 20-30 КБ, из которых некоторая информация должна отображаться в DataGrid как один источник данных. Как сделать файл привязки 1 (или 2 или 3 файла) к 1 строке в 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>

Должен отображаться в одной таблице данных:

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

1 Ответ

0 голосов
/ 29 января 2012

Первое, что вам нужно сделать, это создать класс, содержащий данные 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 для вашей DataGrid, например:

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);
}

MyList - это коллекция, которая содержит все данные, которые вы читаете из ваших XML. Очевидно, что в этом примере я заполняю его образцами данных. Вы должны предоставить код, чтобы заполнить его.

После этого вам нужно создать свою DataGrid. Я помещаю это в Windows, и код:

* * 1010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...