Wpf列表框调整大小问题

时间:2016-04-04 05:37:25

标签: c# wpf xaml listbox grid-layout

我有一个包含两行网格的用户控件。在每一行中都会有一个列表框。问题是,当项目被添加到列表框中时,控件只会继续扩展,以便不再能看到第二行中包含的项目和列表框控件。

如何确保列表框控件不会在没有硬编码高度的情况下展开?每行应具有相同的大小,并且当用户调整窗口大小时,控件应该可以调整大小。

我尝试了很多东西和不同的容器,但还没有解决问题。

示例代码:

<ScrollViewer HorizontalScrollBarVisibility="Visible">
        <DockPanel LastChildFill="True" >
            <Grid DockPanel.Dock="Right">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <GroupBox Header="Allowed Countries" Grid.Column="0" Grid.Row="0">
                    <ListBox VerticalAlignment="Top" >
                        <ListBoxItem Content="Item 1" />
                        <ListBoxItem Content="Item 1" />
                        <ListBoxItem Content="Item 1" />
                        <ListBoxItem Content="Item 1" />
                        <ListBoxItem Content="Item 1" />
                        <ListBoxItem Content="Item 1" />
                        <ListBoxItem Content="Item 1" />
                        <ListBoxItem Content="Item 1" />
                    </ListBox>
                </GroupBox>
                <GroupBox Header="Allowed Languages" Grid.Column="0" Grid.Row="1">
                    <ListBox VerticalAlignment="Top" >
                        <ListBoxItem Content="Item 1" />
                        <ListBoxItem Content="Item 1" />
                        <ListBoxItem Content="Item 1" />
                        <ListBoxItem Content="Item 1" />
                        <ListBoxItem Content="Item 1" />
                        <ListBoxItem Content="Item 1" />
                        <ListBoxItem Content="Item 1" />
                        <ListBoxItem Content="Item 1" />
                    </ListBox>
                </GroupBox>
            /Grid>
        </DockPanel>
</ScrollViewer>

列表框项在此示例中是硬编码的,但是当我解决调整大小问题时,它们将在运行时绑定。使用dockpanel是因为在usercontrol中有除网格之外的其他控件。

也许我使用了错误的控件/容器?

2 个答案:

答案 0 :(得分:0)

自从我上次使用WPF以来已经有一段时间了,但是我相信你所描述的行为是ScrollViewer控件的错误。

我的想法是,ScrolllViewer控件意味着WPF没有对Dockpanel的高度提供硬限制,因此它(以及它的子控件)将尽可能增长,尽管父级的高度窗口。

答案 1 :(得分:0)

我通过将网格行的高度设置为(usercontrol / 2的高度)解决了这个问题。