2014-02-04 2 views
0

У меня есть метод, который принимает содержимое xml из некоторого файла, анализирует его и после этого помещает некоторые подстроки в результат переменных и resultm. Я хочу написать каждое значение, которое я получил в результате и resultm во время циклов foreach. код, который проходит через все значения и получает подстроку выглядит следующим образом:Добавление строкового значения в DataGrid в C#?

var tipList = registers.Select(x => x.Attribute("type").Value); 
var mapToList = registers.Select(x => x.Attribute("mapTo").Value); 

foreach (var reg in registers) 
{ 
    foreach (var tpl in tipList) 
    { 
    var end = tpl.IndexOf(','); 
    var start = tpl.LastIndexOf('.', (end == -1 ? tpl.Length - 1 : end)) + 1; 
    var result = tpl.Substring(start, (end == -1 ? tpl.Length : end) - start); 
    } 

    foreach (var mpl in mapToList) 
    { 
    var endm = mpl.IndexOf(','); 
    var startm = mpl.LastIndexOf('.', (endm == -1 ? mpl.Length - 1 : endm)) + 1; 
    var resultm = mpl.Substring(startm, (endm == -1 ? mpl.Length : endm) - startm); 
    } 
} 

Может кто-нибудь помочь мне с идеей, как добавить значение результата и resultm строк в некотором DataGrid в C#?

+0

, как вы хотели бы видеть на выходе бок о бок или в какой-то колонке –

+0

я думал, что бок о бок будет холоднее, но это же колонка будет также хорошо. –

+0

взгляните на мой ответ –

ответ

1

Вот как вы можете достичь этого

/// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     ObservableCollection<Tuple<string,string>> _observableCollection = new ObservableCollection<Tuple<string, string>>(); 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 
     private void MyMethod() 
     { 
      var tipList = registers.Select(x => x.Attribute("type").Value); 
      var mapToList = registers.Select(x => x.Attribute("mapTo").Value); 
      List<string> listresult = new List<string>(); 
      List<string> listresultm = new List<string>(); 


      foreach (var reg in registers) 
      { 
       foreach (var tpl in tipList) 
       { 
        var end = tpl.IndexOf(','); 
        var start = tpl.LastIndexOf('.', (end == -1 ? tpl.Length - 1 : end)) + 1; 
        var result = tpl.Substring(start, (end == -1 ? tpl.Length : end) - start); 
        listresult.Add(result); 
       } 

       foreach (var mpl in mapToList) 
       { 
        var endm = mpl.IndexOf(','); 
        var startm = mpl.LastIndexOf('.', (endm == -1 ? mpl.Length - 1 : endm)) + 1; 
        var resultm = mpl.Substring(startm, (endm == -1 ? mpl.Length : endm) - startm); 
        listresultm.Add(resultm); 
       } 
       int maxLenList = Math.Max(listresult.Count, listresultm.Count); 
       for (int i = 0; i <maxLenList; i++) 
       { 
        if (i < listresult.Count && i<listresultm.Count) 
        { 
         _observableCollection.Add(new Tuple<string, string>(listresult[i],listresultm[i])); 
        } 
        else if(i>=listresult.Count) 
        { 
         _observableCollection.Add(new Tuple<string, string>(string.Empty, listresultm[i])); 
        } 
        else if(i>=listresultm.Count) 
        { 
         _observableCollection.Add(new Tuple<string, string>(listresult[i],string.Empty)); 
        } 
       } 
      } 
      dataGrid1.ItemsSource= _observableCollection; 
     } 
+0

Один вопрос, в: public partial class MainWindow: Window Окно из пространства имен System.Windows.Window, правильно? –

+0

права вы не должны скопировать весь код, только кода между первым {и последний} –

+0

Mine окна XAML, это определить, как это: общественного класс CreateAreaDialogWindow парциального: System.Windows.Window { ObservableCollection <набор <строку, string >> _obsCollection = new CreateAreaDialogWindow(); Но я получаю сообщение об ошибке для нового CreateAreaDialogWindow(); Ошибка 1 \t Не удается неявно преобразовать тип «SEDMS.VisualStudioPackage.Dialogs.CreateAreaDialogWindow» до «System.Collections.ObjectModel.ObservableCollection >» Будет ли ваш код работать в зоне? –

Смежные вопросы