2009-11-08 3 views
2

Je construis une petite application WPF. Pour la mise en page dans l'application, j'utilise une grille avec deux colonnes et deux lignes. Je veux avoir un rectangle d'arrière-plan qui remplisse l'ensemble de l'application, et je veux que le rectangle d'arrière-plan se détende, donc si un utilisateur redimensionne la fenêtre, le rectangle s'étire et remplit toujours la fenêtre entière. Donc, dans ma grille, je l'ai défini un rectangle comme suit:Comment est-ce que je peux faire strech rectangle sur toute la grille?

<Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition Width="Auto"/> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
     </Grid.RowDefinitions> 

     <Rectangle x:Name="BackgroundRect" Fill="Stretch"> 
      <Rectangle.Fill> 
       <RadialGradientBrush GradientOrigin="0.485,0.2" Center="0.492,0.526"> 
        <GradientStop Color="#FF3C3C3E" Offset="1"/> 
        <GradientStop Color="#FF84897D"/> 
       </RadialGradientBrush> 
      </Rectangle.Fill> 
     </Rectangle> 
</grid> 

Maintenant, j'ai essayé de définir les rectangles Remplissez à strech, je me suis fixé grid.columnspan et grid.rowspan à 2. J'ai essayé de placer le rectangle dans une vue. Rien ne fonctionne.

Est-ce que quelqu'un sait comment je peux faire en sorte que le rectangle remplisse toute ma fenêtre?

Merci d'avance!

+0

Est-ce que vous définissez la propriété Fill deux fois sur le Rectangle (une fois en tant qu'attribut puis en tant qu'élément enfant) juste une faute de frappe? – AnthonyWJones

+0

Notez que les panneaux ont une propriété [Arrière-plan] (http://msdn.microsoft.com/en-us/library/system.windows.controls.panel.background.aspx) donc, si le but ultime est de définir un en arrière-plan dans la grille et ne pas effectuer d'autres actions avec le rectangle, alors vous pouvez simplement définir Grid.Background avec le RadialGradientBrush. –

Répondre

5

D'abord, définissez Grid.ColumnSpan="2" et Grid.RowSpan="2" sur votre Rectangle. Vous devez le faire si vous voulez qu'il couvre toute la grille.

Deuxièmement, puisque vous avez votre Column/RowDefinitionWidth/Heights ensemble à Auto, rien ne sera montré en ce moment parce que vous avez pas de contenu dans ces colonnes/lignes pour les redimensionne automatiquement avoir (peut-être vous juste retiré de l'échantillon?). Ce que vous devez faire est de définir l'une des colonnes à Width="*" et l'une des lignes à Height="*" qui dit essentiellement: "remplir le reste de l'espace horizontal/vertical avec cette colonne/ligne". Troisièmement, jusqu'à ce que vous mettez quelque chose dans le Grid vous ne verrez rien car il n'aura pas de hauteur. Si vous voulez juste vous assurer que votre fond Rectangle va s'afficher correctement, donnez simplement Grid un Height="200" ou quelque chose pour le moment.

+0

Merci! C'était une excellente réponse à ma question. Maintenant, cela fonctionne exactement comme je le veux! –

Questions connexes