2009-05-20 9 views
3

Da die Leinwand ein Top/Left für die Platzierung benötigt, wenn Sie etwas zentrieren möchten, ist ein Gitter in der richtigen Leinwand hinzuzufügen. Oben mit HorizontalAlignment = "Center" die beste Möglichkeit, oder Gibt es einen besseren Weg?Perfect Center auf WPF Canvas

Diese Schnipsel ist ein 150x300 Leinwand, mit Inhalt in einem Raster zentriert ....

<Canvas Width="150" Height="300"> 
    <Grid Canvas.Top="75" Width="106" HorizontalAlignment="Center"> 
     {whatever you want centered} 
    </Grid> 
</Canvas> 

Antwort

7

Guy-Lösung funktioniert, aber Sie können z Ordnung und Sichtbarkeit zu optimieren, wenn Sie Treffertests jonglieren.

Eine weitere Alternative ist das Raster innerhalb des Canvas (wie Sie es in Ihrem XAML angegeben haben) mit der Höhe/Breite, die auf die Höhe/Breite des Canvas gesetzt (oder damit verbunden) ist. Setzen Sie anschließend HorizontalAlignment/VerticalAlignment für den Inhalt Ihres Rasters auf "Mitte".

4

Ich bin mir nicht sicher, ob dies Ihre genaue Anforderung erfüllen, aber wenn Sie sowohl die Leinwand setzen und der Inhalt innerhalb eines Gitters als Peers, es wird Ihnen eine zentrierte Ergebnis:

<Grid> 
    <Canvas Width="150" Height="300"/> 
    <Button HorizontalAlignment="Center" VerticalAlignment="Center" Width="106" Content="Click"/> 
</Grid> 
Verwandte Themen