2017-02-09 16 views
1

Ich habe folgende XAML in meiner WPF-Anwendung:WPF Top-Position des macht Elements befestigt

<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> 

ich die Leinwand sein resizable mit dem Fenster wollte, die ich durch die Bindung seiner Breite mit der Breite des Fensters erreicht . Ich möchte aber auch, dass es an der gleichen Stelle bleibt, wenn das Fenster in der Größe geändert wird. statt, tut es dies: enter image description here

Ich weiß nicht, wie dieses Problem zu beheben (da ich ein kompletter WPF Anfänger bin :))

Antwort

0

Sie Ihre Grid innerhalb eines DockPanel platzieren und setzen Sie die Eigenschaft auf DockTop. Sie können auch einige Ränder von DockPanel angeben.

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

Das ist nicht, funktionierte die Leinwand wird immer noch nach unten bewegt, wenn das Fenster in der Größe geändert wird. – Eutherpy

-1

Ich denke, ein Stackpanel ist eine viel einfachere Wahl:

<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> 

Hinweis, dass es keine Notwendigkeit gibt, die Breite für Bindung oder mit horizontalem oder vertikalem Alignments