3

由于画布需要 Top/Left 来放置,如果你想居中,在适当的 Canvas.Top 上添加一个网格,Horizo​​ntalAlignment="Center" 是最好的方法,还是有更好的方法?

这个片段是一个 150X300 的画布,一些内容以网格为中心....

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

2 回答 2

7

Guy 的解决方案有效,但如果您同时进行命中测试,您可能需要调整 z 顺序和可见性。

另一种选择是在画布内设置网格(正如您在 XAML 中指定的那样),并将高度/宽度设置为(或绑定到)画布的高度/宽度。然后将 Horizo​​ntalAlignment/VerticalAlignment 设置为 Grid 内容的中心。

于 2009-05-20T21:04:41.577 回答
4

我不确定这是否能满足您的确切要求,但是如果您将画布和内容作为对等点放在网格中,它将为您提供居中的结果:

<Grid>
    <Canvas Width="150" Height="300"/>
    <Button HorizontalAlignment="Center" VerticalAlignment="Center" Width="106" Content="Click"/>
</Grid>
于 2009-05-20T18:22:49.373 回答