在包裹面板中添加多个堆叠面板.........

时间:2011-04-25 08:29:49

标签: .net wpf

我有一个WrapPanel 名称为“PageWrapPanel” 在我的WPF应用程序的主窗口中

现在我试图在这个包装面板中添加一个堆栈面板五次......

StackPanel stkPnl = new StackPanel();
            stkPnl.Width = 300;
            stkPnl.Height = 150;
            stkPnl.Background = Brushes.DarkKhaki;

            for (int i = 0; i < 5; i++)
            {
                PageWrapPanel.Children.Add(stkPnl);
            }

但它不起作用...... 出了什么问题?

2 个答案:

答案 0 :(得分:2)

您无法在逻辑树中的多个位置添加相同的元素。您需要添加五个相同的StackPanel代替。

for (int i = 0; i < 5; i++)
{
    StackPanel stkPnl = new StackPanel();
    stkPnl.Width = 300;
    stkPnl.Height = 150;
    stkPnl.Background = Brushes.DarkKhaki;
    PageWrapPanel.Children.Add(stkPnl);
}
顺便说一句,这应该从你得到的异常中的错误消息中明显看出(“指定的元素已经是另一个元素的逻辑子元素了。”),你完全应该提供而不是让它人们猜。

答案 1 :(得分:1)

尝试在循环中创建StackPanel

for (int i = 0; i < 5; i++)
{
    StackPanel stkPnl = new StackPanel(); 
    stkPnl.Width = 300;
    stkPnl.Height = 150;
    stkPnl.Background = Brushes.DarkKhaki;
    PageWrapPanel.Children.Add(stkPnl);
}

否则,您已尝试将多个StackPanel放在WrapPanel中多次,这是您的错误所在。