zuguorui 2018-01-17 00:13 采纳率: 0%
浏览 3084
已结题

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);

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

  • 写回答

3条回答 默认 最新

  • hxycsdn9159 2018-01-17 01:36
    关注

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

    评论
  • zuguorui 2018-01-17 21:39
    关注

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

    评论
  • staor 2018-01-25 23:31
    关注

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

    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部