2016-04-04 109 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的高度)來解決此問題。