我的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;即可