2012-02-24 126 views
0

我想以編程方式將列添加到我的數據網格並綁定它。以編程方式添加並綁定DataGrid列

我已經嘗試過在網絡上的例子,但不能得到的數據顯示。

我確實使用過在xaml中聲明的列。

這裏是DataGrid中的XAML聲明:

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

這裏是我設置爲DataGrid DataContext的:

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 2012-02-24 11:35:45

+0

@ user589195:你說得對,我編輯了我的答案。 – 2012-02-24 11:37:37

+0

我認爲,因爲我使用Xpath來設置我的datacontext,datacolumn的綁定將從該點開始在xml中?所以它會像dc.Binding =新的綁定(「/ moo/response/data/load/panel/panelCode」); – user589195 2012-02-24 11:39:04

相關問題