2010-08-31 13 views
10

Je veux avoir une grille simple, 3 colonnes avec des colonnes redimensionnables et un MinWidth de 80.GridSplitter ignore minwidth des colonnes

Le code ressemble à ceci:

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

Mais cela ne fonctionne pas la façon dont je veux et attendu. Lorsque les séparateurs sont poussés vers la gauche, tout fonctionne bien. Lorsque le deuxième séparateur est poussé vers la droite tout fonctionne bien. Mais si le premier séparateur est poussé vers la droite, il pousse la 3ème colonne et la seconde séparatrice hors de la grille (ou fait leur largeur = 0).

J'utilise des colonnes séparées pour les gridsplitters, comme cela a été fait dans l'exemple msdn:

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

Je mets également l'alignement au centre comme je l'ai lu alignement quelque part droit pourrait être un problème et essayé différents ResizeBehaviors .

Est-ce que quelqu'un sait, comment résoudre ce problème, de sorte qu'à tout moment les 3 colonnes sont visibles avec au moins 80px de largeur?

Merci pour toute aide

Répondre

16

Essayez plutôt pour trois colonnes qui ont mis minwidth à 80. Utiliser * au lieu de spécifier la largeur exacte lors de l'utilisation 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

Ceci génère un espace supplémentaire lorsque la colonne 5 ou 3 est redimensionnée plus que sa largeur minimale. . . –