Since the canvas requires top / left for placement, if you want to center something, add a grid on the correct Canvas.Top with HorizontalAlignment = "Center", the best way to do this, or is there a better way
This snippet is a 150X300 canvas, with some content centered on the grid ....
<Canvas Width="150" Height="300">
<Grid Canvas.Top="75" Width="106" HorizontalAlignment="Center">
{whatever you want centered}
</Grid>
</Canvas>
source
share