2010-08-31 12 views
10

voglio avere una semplice griglia 3 colonne con le colonne ridimensionabili e un MinWidth di 80.GridSplitter ignora MinWidth di colonne

Il codice è simile al seguente:

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

Ma non funziona in il modo in cui voglio e mi aspetto Quando gli splitter vengono spostati a sinistra, tutto funziona correttamente. Quando il secondo splitter viene spostato a destra, tutto funziona correttamente. Ma se il primo splitter viene spinto a destra, spinge la 3a colonna e il secondo splitter fuori dalla griglia (o rende la loro larghezza = 0).

ho usato le colonne separate per i gridsplitters, come è stato fatto nell'esempio MSDN:

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

Ho anche impostare l'allineamento per centrare come ho letto l'allineamento da qualche parte a destra potrebbe essere un problema e provato diverse ResizeBehaviors .

Qualcuno sa, come risolvere questo problema, in modo che in ogni momento le 3 colonne siano visibili con una larghezza di almeno 80 px?

Grazie per qualsiasi aiuto

risposta

16

Prova a modificare per tre colonne che hanno impostato MinWidth a 80. Usa invece di specificare larghezza esatta quando si utilizza gridsplitters.

<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

Ciò genera uno spazio aggiuntivo quando la colonna 5 o 3 viene ridimensionata più della sua larghezza minima. . . –