2016-04-05 13 views
0

Ich habe eine Listbox mit verschiedenen Elementen im Inneren. Es ist in einem Raster mit Spaltendefinition, aber wenn Elemente das Fenster überschreiten, ist es notwendig, Bildlaufleisten zu haben, damit ich den ganzen Inhalt sehen kann.ListBox zeigt keine Bildlaufleiste

enter image description here

und die XAML ist:

<Grid > 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto" /> 
      <ColumnDefinition Width="*" /> 
     </Grid.ColumnDefinitions> 
     <ListBox x:Name="lbxOptionsTab3" Background="{x:Null}" BorderBrush="Gainsboro" 
       SelectionChanged="ListBox_SelectionChanged" 
       HorizontalContentAlignment="Stretch" Margin="10" 
       ScrollViewer.HorizontalScrollBarVisibility="Visible" 
       ScrollViewer.CanContentScroll="True"> 
      <ListBox.Effect> 
       <DropShadowEffect ShadowDepth="4" Direction="330" Color="Black" Opacity="0.5" BlurRadius="4"/> 
      </ListBox.Effect> 
     </ListBox> 
     <Border x:Name="Border2Tab3" BorderBrush="Gainsboro" 
       Background="{x:Null}" MinWidth="100" 
       BorderThickness="5" Grid.Column="1" Margin="10,10,10,10"> 
      ... 

ich eine Menge Lösung gelesen haben wie diese one und kurz in Ich habe alle Möglichkeiten geprüft:

  • es ist in einem Raster.
  • das Gitter Spaltendefinition *
  • Ich habe eine Scroll

aber nichts funktionierte.

Liste item

Antwort

1

Wie ich es sehe, Sie haben zwei Optionen, in beiden müssen Sie das enthaltene Gitter "zurückhalten":

  1. Wie in anderen Antworten vorgeschlagen stellen Sie das enthaltenden Rasterweite oder maximale Breite, die die Bildlaufleisten nur, wenn die ListBoxItems Höhen sind größer als die Gitterhöhe zeigen:

    <Grid Height="50"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="Auto" /> 
          <ColumnDefinition Width="*" /> 
        </Grid.ColumnDefinitions> 
        <ListBox x:Name="lbxOptionsTab3" Background="{x:Null}" BorderBrush="Gainsboro" SelectionChanged="ListBox_SelectionChanged" HorizontalContentAlignment="Stretch" Margin="10" ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.CanContentScroll="True"> 
         <ListBox.Effect> 
          <DropShadowEffect ShadowDepth="4" Direction="330" Color="Black" Opacity="0.5" BlurRadius="4"/> 
         </ListBox.Effect> 
        </ListBox> 
        <Border x:Name="Border2Tab3" BorderBrush="Gainsboro" Background="{x:Null}" MinWidth="100" BorderThickness="5" Grid.Column="1" Margin="10,10,10,10" > 
    </Grid> 
    
  2. a Erstellen " Super-grid“mit RowDefinitions, die die ListBoxItems enthaltenden Gitter enthält ("Sub grid"), werden die RowDefinitions das Sub Gitter zurückhalten (in dem Beispiel nicht mehr als 1/3 Fensterhöhe):

    <Grid> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="*" /> 
         <RowDefinition Height="*" /> 
         <RowDefinition Height="*" /> 
        </Grid.RowDefinitions> 
    
        <Grid Grid.Row="1"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="Auto" /> 
          <ColumnDefinition Width="*" /> 
         </Grid.ColumnDefinitions> 
    
         <ListBox x:Name="lbxOptionsTab3" ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.CanContentScroll="True"> 
          <ListBoxItem Content="ppp" /> 
          <ListBoxItem Content="ppp" /> 
          <ListBoxItem Content="ppp" /> 
          <ListBoxItem Content="ppp" /> 
          <ListBoxItem Content="ppp" /> 
          <ListBoxItem Content="ppp" /> 
          <ListBoxItem Content="ppp" /> 
          <ListBoxItem Content="ppp" /> 
          <ListBoxItem Content="ppp" /> 
          <ListBoxItem Content="ppp" /> 
          <ListBoxItem Content="ppp" /> 
         </ListBox> 
        </Grid> 
    </Grid> 
    
0

ich versuchen würde, entweder Breite oder maximale Breite des listbox bis zu einem gewissen Wert, zum Beispiel 100. Wenn die Bildlaufleiste angezeigt wird, dann ist das Problem ist, dass das Listenfeld keine Grenzen für seine Breite zu setzen hat. Er dehnt sich also nach Bedarf aus und muss daher seine Bildlaufleiste überhaupt nicht anzeigen.

0

Blick auf die Spaltendefinition

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="Auto" /> 
    <ColumnDefinition Width="*" /> 
</Grid.ColumnDefinitions> 

Auto ist, dass Sie alle den Raum nehmen müssen
Versuchen:

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="*" /> 
    <ColumnDefinition Width="2*" /> 
</Grid.ColumnDefinitions> 

Probe

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="2*" /> 
    </Grid.ColumnDefinitions> 
    <ListBox Grid.Row="0" Grid.Column="0" 
     ScrollViewer.HorizontalScrollBarVisibility="Visible" > 
     <ListBoxItem Content="ppp this need to be long longer longest" /> 
     <ListBoxItem Content="ppp this need to be long longer longest" /> 
     <ListBoxItem Content="ppp this need to be long longer longest" /> 
     <ListBoxItem Content="ppp this need to be long longer longest" /> 
     <ListBoxItem Content="ppp this need to be long longer longest" /> 
     <ListBoxItem Content="ppp this need to be long longer longest" /> 
     <ListBoxItem Content="ppp this need to be long longer longest" /> 
     <ListBoxItem Content="ppp this need to be long longer longest" /> 
     <ListBoxItem Content="ppp this need to be long longer longest" /> 
     <ListBoxItem Content="ppp this need to be long longer longest" /> 
     <ListBoxItem Content="ppp this need to be long longer longest" /> 
     <ListBoxItem Content="ppp this need to be long longer longest" /> 
     <ListBoxItem Content="ppp this need to be long longer longest" /> 
     <ListBoxItem Content="ppp this need to be long longer longest" /> 
     <ListBoxItem Content="ppp this need to be long longer longest" /> 
     <ListBoxItem Content="ppp this need to be long longer longest" /> 
     <ListBoxItem Content="ppp this need to be long longer longest" /> 
     <ListBoxItem Content="ppp this need to be long longer longest" /> 
     <ListBoxItem Content="ppp this need to be long longer longest" /> 
     <ListBoxItem Content="ppp this need to be long longer longest" /> 
     <ListBoxItem Content="ppp this need to be long longer longest" /> 
     <ListBoxItem Content="ppp this need to be long longer longest" /> 
    </ListBox> 
    <Border Grid.Row="0" Grid.Column="1" BorderThickness="5" Margin="10" BorderBrush="Red"/> 
</Grid> 
Verwandte Themen