WPF - GridSplitter avec trois colonnes
J'ai une application avec une grille avec 3 colonnes. La grille de séparateur entre les première et deuxième colonnes fonctionne très bien. Pour obtenir le splitter pour être entre la deuxième et la troisième colonnes, j'ai fait une colonne dans le séparateur. (Maintenant, la troisième colonne est vraiment le quatrième.)
Quand je redimensionner les autres colonnes également reculer. Je suppose que c'est parce que j'ai réglé pour être relative de la taille. Mais je ne sais pas comment le résoudre.
Voici une XAML Pad Prête exemple de mon problème. De le brancher dans le XAML tampon et ensuite essayez de redimensionner la dernière colonne à être plus petits.
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<StackPanel Background="#feca00" Grid.Column="0">
<TextBlock FontSize="35" Foreground="#58290A"
TextWrapping="Wrap">Left Hand Side</TextBlock>
</StackPanel>
<GridSplitter Width="10" />
<Border CornerRadius="10" BorderBrush="#58290A"
BorderThickness="5" Grid.Column="1">
<TextBlock FontSize="25" Margin="20" Foreground="#FECA00"
TextWrapping="Wrap">Right Hand Side</TextBlock>
</Border>
<GridSplitter Grid.Column="2" HorizontalAlignment="Right" VerticalAlignment="Stretch" Width="5"></GridSplitter>
<TabControl Grid.Column="3" Name="tabControl1">
<TabItem Header="Add Links" Name="tabAddLinks">
<Grid></Grid>
</TabItem>
</TabControl>
</Grid>
</Page>
Merci pour l'aide!
EDIT:
Il a été suggéré que le fait d'avoir les deux répartiteurs dans leurs propres colonnes peut fixer. J'ai essayé et maintenant la première splitter également réduit la taille des colonnes, comme la deuxième diviseur de ne.
Voici le code XAML Pavé de code exemple:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<StackPanel Background="#feca00" Grid.Column="0">
<TextBlock FontSize="35" Foreground="#58290A"
TextWrapping="Wrap">Left Hand Side</TextBlock>
</StackPanel>
<GridSplitter Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Stretch" Width="5"></GridSplitter>
<Border CornerRadius="10" BorderBrush="#58290A"
BorderThickness="5" Grid.Column="2">
<TextBlock FontSize="25" Margin="20" Foreground="#FECA00"
TextWrapping="Wrap">Right Hand Side</TextBlock>
</Border>
<GridSplitter Grid.Column="3" HorizontalAlignment="Right" VerticalAlignment="Stretch" Width="5"></GridSplitter>
<TabControl Grid.Column="4" Name="tabControl1">
<TabItem Header="Add Links" Name="tabAddLinks">
<Grid></Grid>
</TabItem>
</TabControl>
</Grid>
</Page>
source d'informationauteur Vaccano
Vous devez vous connecter pour publier un commentaire.
Essayez de définir
HorizontalAlignment="Center"
pour les deux baffles - aucune idée pourquoi avoir mis au "Droit" devrait provoquer le comportement aller plus tordu, mais en changeant cela a fonctionné pour moi 🙂Un GridSplitter doit être placé à l'intérieur de sa propre Colonne dans une Grille. Je ne suis pas sûr de comprendre votre question entièrement, mais je suggère que vous essayez de créer une Grille avec 5 ColumnDefinitions. Utiliser les colonnes 1 et 2 à la place de la GridSplitters et les colonnes 0, 2 et 4 pour le contenu.
La GridSplitter doc MSDN a un exemple sur la façon de le faire.