Как добавить информацию к определённой заявке?

Делаю что-то вроде Help Desk и до поры до времени всё получалось, пусть и криво-косо. Но вот решила я добавить немного функциональности своему приложению, а реализовать что-то не получается. В наличие имеется xml файл со следующей структурой:

 <?xml version="1.0" encoding="utf-8"?>
  <Appeals>
   <appeal0>
    <fullName />
    <company />
    <суть заявки>
    .
    .
    <ID>0</ID>
   </appeal0>
  <appeal1>
   <fullName />
   <company />
   <суть заявки>
   .
   .
   <ID>1</ID>
  </appeal1>
</Appeals>

Model :

  class FillAppeal_VM : INotifyPropertyChanged
  {
     private string _fullName;
     private string _email;
     .
     .

    public string Email
    {
        get { return _email; }
        set
        {
            _email = value;
            OnPropertyChanged("Email");
        }
    }
    .
    .

  }

ViewModel:

 class ViewAppeals_VM : INotifyPropertyChanged
  {
    private FillAppeal_VM _selectedAppeal;
    FillAppeal_model _fillAppeal_Model;



  public FillAppeal_VM SelectedAppeal
    {
        get { return _selectedAppeal; }
        set
        {
            _selectedAppeal = value;
            OnPropertyChanged("SelectedAppeal");
        }
    }

  public ViewAppeals_VM()
    {
        Appeals = new ObservableCollection<FillAppeal_VM>();
        _fillAppeal_Model = new FillAppeal_model();
    }

  void AddAppeals()
    {
       appeals = fileReader.GetAppeals();
        foreach (var appeal in appeals)
        {   
               Appeals.Add(new FillAppeal_VM { FullName = appeal[0], Company = appeal[1],.. });
        }
    }
  }

Класс, в котором метод считывания из xml:

 public List<List<string>> GetAppeals()
     {
      XDocument xdoc = XDocument.Load(pathToAppeals);
      foreach (XElement currentAppeal in xdoc.Element("Appeals").Elements())
            {
                appeal = new List<string>();
                XElement fullNameElement = currentAppeal.Element("fullName");
                XElement companyElement = currentAppeal.Element("company");
                .
                .
                appeal.Add(fullNameElement.Value);
                .
                .
                appeals.Add(appeal);
            }
        }
        return appeals;
     }

И соответственно xaml, в правой части которого ListBox, который при заполнении отображает короткое инфо о заявке:

       <Grid>
        <ListBox  x:Name="BrieflyAppeal"  Visibility="{Binding IsVisibleData}" ItemsSource="{Binding Appeals}"
             SelectedItem="{Binding SelectedAppeal}">
                        <ListBox.ItemTemplate>
                            <DataTemplate >
                                <StackPanel Margin="5,5,0,5" >
                                
                                        <TextBlock Grid.Column="1" FontSize="16" FontWeight="Bold" Foreground="SaddleBrown" Text="{Binding Path=Company}" />
                                        <TextBlock Grid.Column="1" FontSize="14" FontWeight="Bold" Grid.Row="1" Text="{Binding Path=FullName}" />
             .
             .
                                </StackPanel>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
       </Grid>

В правой же части xaml, отображается более подробная информация о заявке( время, дата, статус .. ну и суть самой заявки :

  <StackPanel x:Name="DetailStackPanel" Loaded="DetailStackPanel_Loaded"  DataContext="{Binding SelectedAppeal}">
                    
                    <TextBlock Style="{StaticResource DetailsViewAppeal}" Text="{Binding Company, 
    UpdateSourceTrigger=PropertyChanged}" />
     <TextBlock Style="{StaticResource DetailsViewAppeal}" Text="{Binding Status, 
       UpdateSourceTrigger=PropertyChanged}" />
       <TextBlock Style="{StaticResource DetailsViewAppeal}" Text="{Binding Appeal, 
      UpdateSourceTrigger=PropertyChanged}" />
                             .
                             .
       </StackPanel>

Всё работает как надо. Так как и ListBox и StackPanel привязаны к одной SelectedAppeal то при выборе item в ListBox отображаются такие же данные и в StackPanel.

Как вы могли заметить заявки идут одним скопом. Но что если я хочу добавить информацию к определённой заявке. И вот здесь я зависла. Тут уже вопросы начинаются даже с самого xml файла. Толи создавать множество заявок под одним ID, то ли добавлять данные к заявке с одним ID, но тут опять же непонятно как это будет выглядеть и как потом это разгребать. Но это я ещё могу как-то придумать, распихать там по спискам или что-то типа того.

Больше волнует, как динамически отобразить все данные по одной заявке в StackPanel?? Т.е. при выборе заявки в ListBox, в StackPanel нужно отобразить что-то типа:

<StackPanel x:Name="DetailStackPanel" Loaded="DetailStackPanel_Loaded"  DataContext="{Binding SelectedAppeal}">
  
        <TextBlock Style="{StaticResource DetailsViewAppeal}" Text="{Binding ID, 
       UpdateSourceTrigger=PropertyChanged}" />                  
    
     <Grid>
     <TextBlock Style="{StaticResource DetailsViewAppeal}" Text="{Binding Status, 
       UpdateSourceTrigger=PropertyChanged}" />
       <TextBlock Style="{StaticResource DetailsViewAppeal}" Text="{Binding Appeal, 
      UpdateSourceTrigger=PropertyChanged}" />
                             . 
                             . в общем время, дата, статус и сама заявка
     </Grid>
             
             <Grid>
                         .. потом соответственно, была допустим добавлена информация к заявке с этим же ID и тут следующая дата, время... 
     <TextBlock Style="{StaticResource DetailsViewAppeal}" Text="{Binding Status, 
       UpdateSourceTrigger=PropertyChanged}" />
       <TextBlock Style="{StaticResource DetailsViewAppeal}" Text="{Binding Appeal, 
      UpdateSourceTrigger=PropertyChanged}" />
                             . 
                             .  и т.д.
            </Grid>


               </StackPanel>

Ответы (0 шт):