WPF 在代码中 手动创建了WrapPanel并添加到界面 WrapPanel不会换行

我的xaml界面中界面元素宽高都是Auto的。关键的容器如下:

 <GroupBox Header="使用产品分类选项">
                <VirtualizingStackPanel Orientation="Vertical" Name="ProductContainer">

                </VirtualizingStackPanel>
            </GroupBox>

然后我在cs代码里手动生成了一个WrapPanel,并向里面添加了很多CheckBox,期望它能自动换行,但界面里并没有换行,并且把VirtualizingStackPanel的宽度撑得很大。

 WrapPanel container = new WrapPanel();
 for(int i = 0; i < 100; i++)
 {
            CheckBox checkBox = new CheckBox();
            container.Children.Add(checkBox);
 }
 this.ProductContainer.Children.Add(container);

请问大神是怎么回事。难道还需要调用别的方法吗?

你需要固定wrappanel的宽度,或者固定ProductContainer的宽度

现在已经解决了,依然是没有办法依靠自动布局。只能在初始化WrapPanel的时候,设定它的宽度比ProductContainer小,这样ProductContainer的就能保证ProductContainer的宽度是随着外层GroupBox改变而不是随着内部的控件改变,然后对ProductContainer添加一个SizeChangedEventHandler的委托,在对ProductContain改变大小时,就改变内部控件的大小。

设置container.Orientation = Orientation.Vertical;即可