2013-04-21 152 views
1

我想動態地在wpf中的數據網格的第7列的特定單元格中添加組合框或級別。現在我有一個i元素數組。我正在使用for循環迭代我的時間,並且每次檢查數組的第i個數字是否大於1。如果它大於1,則找到滿足數組值的相應行,並在數據網格的每一行的第7列中添加一個組合框。在數據網格中添加組合框

如果數組值等於1,則會添加標籤。

一個類似的應用我ASP.NEt做了如下

if (count[i] > 1) 
    { 
     DropDownList drp = new DropDownList(); 
     drp.DataSource = dsq.Tables[0]; 
     drp.DataTextField = "Application Name"; 
     drp.DataValueField = "Application Name"; 
     drp.DataBind(); 
    if (row.Cells[0].Text.ToString().Trim().Equals(dt.Rows[i][0].ToString().Trim())) 
     { 
     row.Cells[7].Controls.Add(drp); 
     } 

    } 
    else 
    { 
     Label l = new Label(); 
     l.Text = dsq.Tables[0].Rows[0][0].ToString().Trim(); 

    row.Cells[7].Controls.Add(l); 
     } 

請讓我知道如何實現類似的邏輯數據網格的WPF。

+0

我也希望增加在數據網格中的組合框。你有沒有找到答案?我發現這一點:http://www.dotnetspark.com/kb/1871-wpf-combobox-datagrid.aspx 它使用XAML,但我希望在代碼後面如果可能的話。 – rmooney 2013-04-26 15:17:31

回答

0

是的,我經過大量的研究後找到了答案。請參閱以下內容:

for (int j = 0; j < dt2.Rows.Count; j++) 
    { 
    DataGridRow row = 
    DataGridRow)dgApplications.ItemContainerGenerator.ContainerFromIndex(j); 
    DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(row); 
    DataGridCell cell0 = 
    (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(0); 

    ComboBox cb = new ComboBox(); 
foreach (DataRow row2 in dsq.Tables[0].Rows) 
    { 
     ComboBoxItem cbx = new ComboBoxItem(); 
     cbx.Content = row2["Application Name"]; 
    cb.Items.Add(cbx); 
    }        
    cell7.Content = cb; 

//該GetVisualFunction

public static T GetVisualChild<T>(Visual parent) where T : Visual 
{ 
    T child = default(T); 

    Application.Current.Dispatcher.Invoke(DispatcherPriority.Normal, (Action)delegate() 
    { 
     int numVisuals = VisualTreeHelper.GetChildrenCount(parent); 
     for (int i = 0; i < numVisuals; i++) 
     { 
      Visual v = (Visual)VisualTreeHelper.GetChild(parent, i); 
      child = v as T; 
      if (child == null) 
      { 
       child = GetVisualChild<T>(v); 
      } 
      if (child != null) 
      { 
       break; 
      } 
     } 

    } 
    ); 
相關問題