2012-12-08 1 views
0

Je peins dynamiquement sur ma toile qui se trouve à l'intérieur de ma grille WPF mais ni la toile ni la grille ne s'étirent correctement. Voici mon code ....WPF Grille ne s'étire pas avec la fenêtre

<Window x:Class="WPFNimGame.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Game of Nim" Height="auto" Width="auto" PreviewKeyDown="Window_PreviewKeyDown_1" Name="Window"> 
<Grid Name="Grid" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="33"/> 
     <RowDefinition/> 
    </Grid.RowDefinitions> 
    <Border BorderBrush="Black" BorderThickness="10" Grid.RowSpan="2"/> 
    <!--<Grid.Background>--> 
     <!--<ImageBrush ImageSource=".\Properties\black-diamond-plate.bmp" --> 
     <!-- </Grid.Background>--> 
    <DockPanel VerticalAlignment="Top" Height="20" Width="{Binding ElementName=Window,Path=Width}" Grid.RowSpan="2" > 
     <Menu IsMainMenu="True" Margin="0" > 
      <MenuItem Name="File" Header="File" Click="File_Click_1"> 
       <MenuItem Name="NewGame" Header="New Game" /> 
      </MenuItem> 
     </Menu> 
    </DockPanel> 
    <Canvas Name="paintCanvas" Width="{Binding ElementName=Grid,Path=ActualWidth}" Height="{Binding ElementName=Grid,Path=ActualHeight}" MouseLeftButtonDown="paintCanvas_MouseLeftButtonDown" Grid.Row="1" > 
     <Border BorderBrush="Blue" BorderThickness="10" ></Border> 
    </Canvas> 
</Grid> 

+0

Vous définissez la hauteur de la ligne 1 dans la RowDefinition mais pour le contenu de la ligne 1 vous définissez la hauteur à la hauteur de la grille. En mathématiques, ils appellent cela plus défini. – Paparazzi

+0

Retirez toutes les références à l'alignement vertical/horizontal, la hauteur et la largeur. Si vous voulez que votre objet soit toujours dans une certaine ligne/colonne, tout ce dont vous avez besoin est de spécifier la colonne, la ligne, la durée de la colonne et l'étendue de la ligne. Pour développer votre grille, mettez un * à côté des définitions (ex: 33 * ou juste *). J'espère que cela t'aides! –

Répondre

0

Si la largeur ou la hauteur d'un Grid sont égaux à « NaN », ils seront déterminés en fonction de la taille de son Children. Le problème est que vous avez défini la taille de Children pour être la même que la taille de la grille. Cela ne fonctionnera pas et le résultat sera toujours 0.

La taille des enfants est déterminée en fonction de leur contenu ou des enfants. Si vous voulez qu'ils aient une taille définie, définissez Height et Width comme étant égal à un double spécifique.

1

S'il vous plaît vérifier la rép Try to set row height *

<Grid Name="gridMain" > 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinition> 
</Grid> 
Questions connexes