2010-07-02 12 views
1

J'ai le XAML montré ci-dessous (par exemple). Si vous faites glisser le séparateur de grille aussi loin que vous le faites vers la gauche, et que vous continuez à faire glisser la souris, la taille de la colonne de droite augmentera en dehors des limites de la fenêtre - évidemment pas ce que je veux.Comment puis-je empêcher le diviseur de grille de redimensionner une colonne en dehors des limites de la fenêtre?

Le problème est que je ne peux pas définir un MaxWidth dur sur la colonne de droite parce que l'utilisateur peut redimensionner la fenêtre, augmentant ainsi l'espace disponible pour cette colonne. Jusqu'à présent, je pense que j'ai besoin de lier le MaxWidth de la colonne de droite à quelque chose comme la zone cliente de la fenêtre moins la largeur de la largeur de gauche plus la largeur de la colonne de séparation. Mais j'aimerais éviter cela si possible. Pensées?

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Width="450" 
     Height="300"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" MinWidth="100" /> 
      <ColumnDefinition Width="Auto" /> 
      <ColumnDefinition Width="200" MinWidth="200" /> 
     </Grid.ColumnDefinitions> 

     <Grid Grid.Column="0"> 
      <Button>Monkey</Button> 
     </Grid> 

     <GridSplitter Grid.Column="1" Width="7" ResizeBehavior="PreviousAndNext" /> 

     <Grid Grid.Column="2" Margin="4"> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="Auto" /> 
      </Grid.RowDefinitions> 

      <GroupBox Grid.Row="0" Header="Spaghetti" Margin="0, 0, 0, 5"> 
       <ComboBox HorizontalAlignment="Stretch" VerticalAlignment="Stretch">Noodles</ComboBox> 
      </GroupBox> 

      <Expander Grid.Row="1" Header="Batman" IsExpanded="True" Margin="0, 0, 0, 5"> 
       <Button HorizontalAlignment="Stretch" VerticalAlignment="Stretch">Batman!</Button> 
      </Expander> 
     </Grid> 
    </Grid> 
</Window> 

Répondre

0

J'ai le même problème. Peut-être que ce sera une réponse partielle. J'ai lié le MaxWidth de la colonne que je développe à l'ActualWidth de sa grille. Le but étant que le séparateur ne dépasse jamais la taille de sa grille. La liaison fonctionne correctement mais elle n'atteint pas l'objectif car une fois que mon séparateur de grille atteint le bord de la grille, la grille commence à se redimensionner au fur et à mesure que je déplace le séparateur. Si nous pouvons faire en sorte que la grille ne soit pas redimensionnée avec le séparateur, cela devrait fonctionner.

+0

Je me suis finalement mis au travail - quand je serai au travail demain, je vais vérifier et vous dire ce que j'ai fait. (C'est probablement un hack horrible, je ne m'en souviens pas :)) –