0

这是我为动态生成控件而编写的代码:

private void GenCtrl(string type, int typeid,string sql)
            {
                string id = Convert.ToString(typeid);
            if (type == "TextBox")
                {// created for TextBox
                 }
           else if (type == "ComboBox")
                {
                  ComboBoxEdit  cb = new ComboBoxEdit();
                    cb.Name = "cb" + id; 
                 // this is to set unique id if more than 1 combobox created.

                   cb.Height = 20;
                    cb.Width = 100;
                    cb.Margin = new Thickness(2, 2, 0, 0);
                    cb.HorizontalAlignment = HorizontalAlignment.Left;
                    cb.Text = "Show All";
                    stctrl.Children.Add(cb);                       
                    ComboBoxEdit cbx = (ComboBoxEdit)cb.FindName(cb.Name);
                    cb.DisplayMember = "Name";

                    if(filsql !=null)
                    ServRef.GetComboBoxlistAsync(sql); //this would retrieve the list and attach to the combobox.

                    //ctlst.Add(cb.Name, type);
                }
}

// WCF 服务引用


ServRef.GetComboBoxlistCompleted += new EventHandler<GetComboBoxlistCompletedEventArgs>(ServRef_GetComboBoxlistCompleted);


        void ServRef_GetComboBoxlistCompleted(object sender, GetComboBoxlistCompletedEventArgs e)
        {

            cb.ItemsSource = e.Result;
            cb.SelectedIndex = 0;
        }

我在绑定两个组合框时面临的问题是创建前:cb1,cb2(动态创建)仅控制 cb2 组合框,它是在 ServRef_GetComboBoxlistCompleted 方法中激活的最新控件。我无法绑定第一个控件(组合框)的值。

如果我的问题不清楚,请告诉我。

4

1 回答 1

0

我能够使用 FindName 找到

ComboBoxEdit cbx = (ComboBoxEdit)stackctrl.FindName(cb.Name);
于 2012-10-04T22:37:42.493 回答