2016-04-04 108 views
0

我得到了一个包含两行网格的用户控件。在每一行中都会有一个列表框。问题是,当项目被添加到列表框中时,控件只是继续展开,因此第二行中的包含项目和列表框控件不再可见。Wpf listbox调整大小问题

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

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

示例代码:

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

列表框项目是硬编码在这个例子中,但他们会在运行时绑定的时候,我得到了调整大小问题就迎刃而解了。因为除usercontrol中的网格之外还有其他控件,因此使用dockpanel。

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

回答

0

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

我在这里想到的是,ScrolllViewer控件意味着WPF没有提供对Dockpanel高度的硬性限制,因此它(和它的子控件)会根据需要增长,尽管它的高度父窗口。

0

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