2016-04-04 26 views
0

Ich habe ein Benutzer-Steuerelement mit einem Raster mit zwei Zeilen. In jeder Zeile wird eine Listbox angezeigt. Das Problem besteht darin, dass beim Hinzufügen von Elementen zur Listbox das Steuerelement einfach erweitert wird, sodass die enthaltenen Elemente und das Listbox-Steuerelement in Zeile zwei nicht mehr angezeigt werden.Wpf listbox Größe ändern Problem

Wie stelle ich sicher, dass die Listbox-Steuerelemente nicht erweitert wird, ohne eine Höhe hardcoding? Jede Zeile sollte dieselbe Größe haben und die Steuerelemente sollten in der Größe veränderbar sein, wenn der Benutzer die Größe des Fensters ändert.

Ich habe eine Menge Dinge und verschiedene Container ausprobiert, aber das Problem noch nicht gelöst.

Beispielcode:

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

Die Listbox Artikel sind hartcodiert in diesem Beispiel aber sie werden zur Laufzeit binded werden, wenn ich das Resize-Problem gelöst bekommen. Das Dockpanel wird verwendet, da es andere Steuerelemente als das Raster in der Benutzersteuerung gibt.

Vielleicht verwende ich das falsche Steuerelement/Container?

Antwort

0

Es ist eine Weile her, seit ich zuletzt mit WPF gearbeitet habe, aber ich bin glaube, das Verhalten, das Sie beschreiben, ist der Fehler der ScrollViewer-Steuerelement.

Ich denke hier ist, dass das ScrolllViewer-Steuerelement bedeuten würde, dass WPF keine feste Grenze für die Höhe des Dockpanels bietet, und als solches (und seine untergeordneten Steuerelemente) würde wachsen wie benötigt, trotz der Höhe des Elternfenster

0

Ich habe das Problem gelöst, indem ich die Höhe der Rasterzeilen auf (Höhe von usercontrol/2) gesetzt habe.