2011-10-01 90 views
3

我试图创建一个GroupBox,向它添加一个Grid(或StackPanel),然后在它上面放置一些TextBlocks,全部在运行时。这是我试过的在运行时向GroupBox添加控件

GroupBox groupBox1 = new GroupBox(); 
Grid grid1 = new Grid(); 

groupBox1.Width = 85; 
groupBox1.Height = 60; 
grid1.Height = 85; 
grid1.Width = 60; 

groupBox1.Content = grid1.Children.Add(textBlock1); 
groupBox1.Margin = new Thickness(50, 50, 0, 0); 

mainWindow.canvas.Children.Add(groupBox1); 

但我得到的是一个带有厚厚的白色边框,没有任何东西的组框。

回答

4

据我所见,Grid.Children.Add返回一个int,这不是你想要设置groupBox1的内容。

作为非WPF专家,我作为一个未经测试的想法将网格设置为您的groupbox的内容。

grid1.Children.Add(textBlock1); 
groupBox1.Content = grid1; 
+0

啊,我看,但现在我想我的问题是怎么做的我会在运行时在组合框内放置一个网格吗? – kr13

+0

刚试过groupBox1.Content = grid1,它似乎工作。感谢您的帮助。 – kr13

0

对于简单的复选框我用这个代码:

var container = new FlowLayoutPanel 
{ 
    FlowDirection = FlowDirection.TopDown, 
    Dock = DockStyle.Fill 
}; 
myGroupBox.Controls.Add(container); 
foreach (var myText in textList) 
{ 
    var checkBox = new CheckBox 
    { 
     Text = myText 

    }; 
    container.Controls.Add(checkBox); 
} 

当然foreach语句是只为例子:)