c# - 当包含在其他控件中时换行面板不换行

标签 c# wpf xaml window-resize wrappanel

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

如果我将 WrapPanel 的 Grid Control 父级取出并将其放入自己的应用程序中但不是这种格式,则此方法有效。因为我没有为这个网格使用最小宽度,所以我很惊讶为什么它不换行。有任何想法吗?谢谢

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

最佳答案

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

关于c# - 当包含在其他控件中时换行面板不换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28202932/

相关文章:

c# - ASP.NET Core 和 ActionFilter

c# - 如何更改基于 ViewModel 属性的自定义类型的 DataTemplate?

c# - 通过 Adapter.Update 将 DataTable 保存到 SQLite 数据库

c# - AxImp .NET4.0 运行时不匹配

xaml - AutomationProperties.HelpText 不适用于 UWP ListView

c# - 在xaml中更改listviewitem的前景色

wpf - 将Dockpanel内容置于顶部的网格内

c# - 如何更新特定的 XElement?

c# - 将 await 与异步数据库调用一起使用有什么好处

c# - 属性调用方法或启动事件是 "wrong"