我有一个包含两行网格的用户控件。在每一行中都会有一个列表框。问题是,当项目被添加到列表框中时,控件只会继续扩展,以便不再能看到第二行中包含的项目和列表框控件。
如何确保列表框控件不会在没有硬编码高度的情况下展开?每行应具有相同的大小,并且当用户调整窗口大小时,控件应该可以调整大小。
我尝试了很多东西和不同的容器,但还没有解决问题。
示例代码:
<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中有除网格之外的其他控件。
也许我使用了错误的控件/容器?
答案 0 :(得分:0)
自从我上次使用WPF以来已经有一段时间了,但是我相信你所描述的行为是ScrollViewer控件的错误。
我的想法是,ScrolllViewer控件意味着WPF没有对Dockpanel的高度提供硬限制,因此它(以及它的子控件)将尽可能增长,尽管父级的高度窗口。
答案 1 :(得分:0)
我通过将网格行的高度设置为(usercontrol / 2的高度)解决了这个问题。