Wrap Panel不包含在其他控件中

时间:2015-01-28 21:40:22

标签: c# wpf xaml window-resize wrappanel

我正在尝试在WPF中实现一个扩展器,其中有一些嵌套控件。其中一个是Wrap Panel,我想在用户更改窗口大小时将其换行。

如果我将WrapPanel的网格控制父级输出并将其放在自己的应用程序中但不以此格式存在,则此方法有效。因为我没有使用这个网格的最小宽度,所以我很惊讶它为什么不包装。有任何想法吗?感谢

<Window x:Class="WpfApplication5.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525" FontFamily="Calibri" FontSize="8">
<StackPanel Orientation="Vertical">
    <Expander Margin="3" Padding="3">
        <Expander.Header>
            <StackPanel Orientation="Horizontal" MinWidth="150" Width="Auto" MinHeight="25">
                <Label MinWidth="50">Label 1</Label>
                <CheckBox VerticalAlignment="Center"></CheckBox>
                <Border></Border>
                <Label>Label 2</Label>
            </StackPanel>
        </Expander.Header>
        <Expander.Content>
            <StackPanel Orientation="Horizontal" >
                <Label MinWidth="150">Add Image</Label>
                <Grid Name="Grid1"  ShowGridLines="True" Width="Auto">
                    <Grid.RowDefinitions>
                        <RowDefinition Name="Title1" MinHeight="25"></RowDefinition>
                        <RowDefinition Name="Number1" MinHeight="25"></RowDefinition>
                        <RowDefinition Name="PlaneA" MinHeight="25"></RowDefinition>
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Name="Plane1" MinWidth="25" Width="Auto"></ColumnDefinition>
                        <ColumnDefinition Name="PlaneCheckBox" MinWidth="25" Width="Auto"></ColumnDefinition>
                        <ColumnDefinition Name="Border1" MinWidth="25" Width="Auto"></ColumnDefinition>
                        <ColumnDefinition Name="List1" Width="*"></ColumnDefinition>
                    </Grid.ColumnDefinitions>
                    <WrapPanel Grid.Row="2" Grid.Column="3" Orientation="Horizontal" VerticalAlignment="Stretch">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition MinWidth="25"></ColumnDefinition>
                                <ColumnDefinition MinWidth="25"></ColumnDefinition>
                            </Grid.ColumnDefinitions>
                            <CheckBox Grid.Column="0" VerticalAlignment="Center"></CheckBox>
                            <Label Grid.Column="1">No. 1</Label>
                        </Grid>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition MinWidth="25"></ColumnDefinition>
                                <ColumnDefinition MinWidth="25"></ColumnDefinition>
                            </Grid.ColumnDefinitions>
                            <CheckBox Grid.Column="0" VerticalAlignment="Center"></CheckBox>
                            <Label Grid.Column="1">No. 1</Label>
                        </Grid>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition MinWidth="25"></ColumnDefinition>
                                <ColumnDefinition MinWidth="25"></ColumnDefinition>
                            </Grid.ColumnDefinitions>
                            <CheckBox Grid.Column="0" VerticalAlignment="Center"></CheckBox>
                            <Label Grid.Column="1">No. 1</Label>
                        </Grid>
                    </WrapPanel>
                </Grid>
            </StackPanel>
        </Expander.Content>
    </Expander>
</StackPanel>

1 个答案:

答案 0 :(得分:0)

StackPanel在方向上具有无限大小。所以当在StackPanel中使用WrapPanel时,必须限制StackPanel在该方向上的大小。另一方面,网格的大小有限,因此您可以看到内容包装。