2012-12-08 48 views
0

我动态地绘制到我的WPF网格内部的画布上,但画布或网格都不能正确拉伸。下面是我的一些代码....WPF Grid不与窗口拉伸

<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

您可以设置第1行的高度在RowDefinition但对于第1行的内容,您设定的高度,以网格的高度。在数学中,他们称之为过度定义。 – Paparazzi

+0

取出所有对垂直/水平对齐,高度和宽度的引用。如果您希望对象始终位于特定的行/列中,则只需指定列,行,列跨度和行跨度。要扩展您的网格,请在定义旁边放置一个*(例如33 *或仅*)。希望这可以帮助! –

回答

0

如果宽度或高度Grid等于“南”,他们将根据其Children的大小决定。问题是您已将Children的大小设置为与网格的大小相同。这将不起作用,结果将始终为0.

儿童的大小取决于其内容或儿童。如果您希望它们具有确定的大小,请将“高度”和“宽度”设置为等于特定的大小。