none
TabControl 动态添加控件 RRS feed

  • 问题

  • Silverlight 中, 在TabControl 的控件 , 如何在所选择的Tab中, 再动态添加新的控件 ?

    类似以下语句, 也就是最后那句该怎么实现?

        Label label1 = new Label();
    
        label1.Location = new Point(200, 20);
    
        label1.Size = new Size(200, 20);
    
        label1.Text = "aaa";
    
    
    
        TabControl1.SelectedTab.Controls.Add(label1);
    
    
    2010年5月27日 14:30

答案

  • TabControl肯定有多个TabItem,每个TabItem有一个直接的容器作为其Content,比如:

    <sdk:TabControl x:Name="TabControl1">
    	<sdk:TabItem Header="TabItem1">
    		<Grid>
    		</Grid>
    	</sdk:TabItem>
    	<sdk:TabItem Header="TabItem2">
    		<Grid>
    		</Grid>
    	</sdk:TabItem>
    </sdk:TabControl>

    在这个例子中,可以这样添加:

    var grid = (Grid)TabControl1.SelectedContent;
    grid.Children.Add (label1);

    • 已标记为答案 fss199 2010年5月28日 1:54
    2010年5月27日 16:14
  • 那就直接创建出来,比如:

    ti.Content = new Grid ();

    • 已标记为答案 fss199 2010年5月28日 1:54
    2010年5月28日 1:42

全部回复

  • TabControl肯定有多个TabItem,每个TabItem有一个直接的容器作为其Content,比如:

    <sdk:TabControl x:Name="TabControl1">
    	<sdk:TabItem Header="TabItem1">
    		<Grid>
    		</Grid>
    	</sdk:TabItem>
    	<sdk:TabItem Header="TabItem2">
    		<Grid>
    		</Grid>
    	</sdk:TabItem>
    </sdk:TabControl>

    在这个例子中,可以这样添加:

    var grid = (Grid)TabControl1.SelectedContent;
    grid.Children.Add (label1);

    • 已标记为答案 fss199 2010年5月28日 1:54
    2010年5月27日 16:14
  • 谢谢您! 假如连 TabControl 都是动态生成的, 那么每个 Tab 下 的 Grid 该怎么创建?

    TabControl tc = new TabControl();
            tc.Width = 1024;
            tc.Height = 300;
            int x = 0;
            foreach (Production p1 in p.Entities)
            {
              TabItem ti = new TabItem();
              ti.Name = "ti" + x.ToString();
              ti.Header = p1.Header;
              tc.Items.Add(g);
              x++;
            }
            
            StackPanel1.Children.Add(tc);
    2010年5月27日 23:03
  • 那就直接创建出来,比如:

    ti.Content = new Grid ();

    • 已标记为答案 fss199 2010年5月28日 1:54
    2010年5月28日 1:42
  • 那就直接创建出来,比如:

     

    ti.Content = new Grid ();
    
    

     


    谢谢您!
    2010年5月28日 1:55