2012-02-24 5 views
0

Я хочу добавить колонку программно к моему datagrid и связать его.Программно добавить и привязать столбец DataGrid

Я пробовал следующие примеры в Интернете, но не могу получить данные, которые будут отображаться.

У меня была работа с столбцами, объявленными в xaml.

Вот DataGrid Xaml декларация:

<DataGrid Grid.Row="0" x:Name="dtgMain" AutoGenerateColumns="False" ItemsSource="{Binding}" RowHeight="25" SizeChanged="dtgMain_SizeChanged"></DataGrid> 

Вот где я поставил DataContext для DataGrid:

System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); 
       doc.LoadXml(response); 
       provider.Document = doc; 
       provider.XPath = "/moo/response/data/load/panel"; 
       dtgMain.DataContext = provider; 

Вот где я добавить столбец:

DataGridTextColumn dc = new DataGridTextColumn(); 
      dc.Binding = new Binding("panelCode"); 
      dc.Header = "Job Number"; 
      dtgMain.Columns.Add(dc); 

И вот пример xml:

<moo> 
    <response> 
    <data> 
     <load count="2">true 
     <panel index="10"> 
      <panelCode>100072 
      </panelCode> 
     </panel> 
     </load> 
    </data> 
    </response> 
</moo> 

ответ

3

Ваш столбец не используется XPath, когда ему это кажется.

dc.Binding = new Binding() { XPath = "panelCode" }; 
+0

как я уже говорил, этот код работал нормально, когда столбцы были объявлены в xaml. Так что я предполагаю, что проблема заключается в том, что нужно делать с тем, чтобы объявить привязку на datacolumn. Я просто попробовал это, и он все еще не работает. – user589195

+0

@ user589195: Вы правы, я отредактировал свой ответ. –

+0

Я предположил, что, поскольку я использую Xpath для установки моего datacontext, что привязка datacolumn начнется в xml с этой точки? Так будет ли это что-то вроде dc.Binding = new Binding ("/ moo/response/data/load/panel/panelCode"); – user589195

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