2013-04-21 126 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; 
      } 
     } 

    } 
    ); 
相关问题