【问题标题】:Adding a combobox inside a datagrid在数据网格中添加组合框
【发布时间】:2013-04-14 12:45:49
【问题描述】:

我想在 wpf 的数据网格中的第 7 列的特定单元格中动态添加组合框或级别。现在我有一个 i 元素数组。我正在使用迭代 i 时间的 for 循环,并且每次检查数组的第 i 个数字是否大于 1。如果大于 1,则找出满足数组值的对应行,并在 datagrid 的每一行的第 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 的数据网格中实现类似的逻辑。

【问题讨论】:

标签: datagrid


【解决方案1】:

是的,经过大量研究,我找到了答案。请看下面:

 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;
            }
        }

    }
   );

【讨论】:

    猜你喜欢
    • 2016-11-11
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    相关资源
    最近更新 更多