2017-02-09 174 views
1

我在我的WPF应用程序下面的XAML代码:WPF使元素的顶部位置固定

<Grid RenderTransformOrigin="0.524,0.496" Height="478" VerticalAlignment="Bottom"> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="*"/> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*"/> 
       <ColumnDefinition Width="*"/> 
      </Grid.ColumnDefinitions> 
      <Canvas Grid.Row="0" Margin="0,22,0,0" Width="{Binding ActualWidth, ElementName=window, Mode=OneWay}" Background="AliceBlue" Height="43" HorizontalAlignment="Left" VerticalAlignment="Top"> 
       <Label x:Name="label" Content="Science Magazine - Papers" Canvas.Left="22" Canvas.Top="6" FontSize="16" Panel.ZIndex="1"/> 
      </Canvas> 
     </Grid> 

我想在画布之后才能调整大小与窗口,这是我用的窗口的宽度结合其宽度达到。不过,我也希望它在调整窗口大小时保持在相同的顶部位置;相反,它这样做:enter image description here

我不知道如何解决这一问题(因为我是一个完整的WPF初学者:))

回答

0

您可以将GridDockPanel并设置Dock属性Top。您还可以指定DockPanel的一些边距。

<DockPanel> 
    <Grid DockPanel.Dock="Top" Margin="0,0,0,0" /> 
</DockPanel> 
+1

这并没有工作,调整窗口大小时,画布仍然向下移动。 – Eutherpy

-1

我觉得一个StackPanel是一个更简单的选择:

<StackPanel> 
    <Canvas Grid.Row="0" Margin="0,50,0,0" Background="Red" Height="43" > 
     <Label x:Name="label" Content="Science Magazine - Papers" Canvas.Left="22" Canvas.Top="6" FontSize="16" Panel.ZIndex="1"/> 
    </Canvas> 
</StackPanel> 

注意,这里不需要绑定宽度或使用水平或垂直路线