2010-08-31 11 views
10

ich ein einfachen 3 Stützenraster mit resizeable Spalten und eine MinWidth von 80.Gridsplitter ignoriert minwidth von Spalten

Der Code sieht wie folgt aus haben will:

<Grid> 
    <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="120" MinWidth="80"/> 
    <ColumnDefinition Width="Auto"/> 
    <ColumnDefinition Width="*" MinWidth="80"/> 
    <ColumnDefinition Width="Auto"/> 
    <ColumnDefinition Width="120" MinWidth="80"/> 
    </Grid.ColumnDefinitions> 
    <GridSplitter Grid.Column="1" Width="5" HorizontalAlignment="Center" /> 
    <GridSplitter Grid.Column="3" Width="5" HorizontalAlignment="Center" /> 
</Grid> 

Aber es funktioniert nicht in so wie ich es möchte und erwarte. Wenn die Splitter nach links geschoben werden, funktioniert alles gut. Wenn der zweite Splitter nach rechts geschoben wird, funktioniert alles gut. Wenn jedoch der erste Teiler nach rechts geschoben wird, wird die dritte Spalte und der zweite Teiler aus dem Raster geschoben (oder ihre Breite = 0).

habe ich separate Spalten für die gridsplitters, wie es in dem Msdn Beispiel Geographie:

<Grid.ColumnDefinitions> 
    <ColumnDefinition/> 
    <ColumnDefinition Width="Auto" /> 
    <ColumnDefinition/> 
</Grid.ColumnDefinitions> 
... 
<GridSplitter Grid.Column="1" 
     HorizontalAlignment="Center" 
     VerticalAlignment="Stretch" 
     Background="Black" 
     ShowsPreview="True" 
     Width="5" 
     /> 

auch die Ausrichtung I gesetzt, wie ich irgendwo richtige Ausrichtung lesen zum Zentrum ein Problem sein könnte und versucht, verschiedene ResizeBehaviors .

Weiß jemand, wie man dieses Problem beheben kann, so dass zu jeder Zeit die 3 Spalten mit mindestens 80px Breite sichtbar sind?

Vielen Dank für jede Hilfe

Antwort

16

dies für drei Spalten Versuchen Sie stattdessen, die minwidth Satz auf 80 verwenden * anstatt genaue Breite angeben, wenn gridsplitters verwenden.

<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Hidden"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" MinWidth="80" /> 
      <ColumnDefinition Width="5"/> 
      <ColumnDefinition Width="*" MinWidth="80"/> 
      <ColumnDefinition Width="5"/> 
      <ColumnDefinition Width="*" MinWidth="80"/> 
     </Grid.ColumnDefinitions> 
     <TextBlock Grid.Column="0" Text="{Binding Path=ActualWidth, RelativeSource={RelativeSource Self}}" /> 
     <GridSplitter Grid.Column="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Background="Red" /> 
     <TextBlock Grid.Column="2" Text="{Binding Path=ActualWidth, RelativeSource={RelativeSource Self}}" /> 
     <GridSplitter Grid.Column="3" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Background="Red" /> 
     <TextBlock Grid.Column="4" Text="{Binding Path=ActualWidth, RelativeSource={RelativeSource Self}}" /> 
    </Grid> 
</ScrollViewer> 
+0

Dies wirft zusätzlichen Platz, wenn die Größe der Spalte 5 oder 3 größer als die Mindestbreite ist. . . –