Идеальный центр на холсте WPF - PullRequest
3 голосов
/ 20 мая 2009

Поскольку холст требует размещения сверху / слева для размещения, если вы хотите центрировать что-то, лучше всего добавить сетку на соответствующем Canvas.Top with HorizontalAlignment = "Center", или есть лучший способ

Этот фрагмент представляет собой холст 150X300, с некоторым содержимым по центру в сетке ....

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

Ответы [ 2 ]

7 голосов
/ 21 мая 2009

Решение Гая работает, но вам, возможно, придется настроить z-порядок и видимость, если вы проводите тестирование попаданий.

Другой альтернативой является использование сетки внутри холста (как вы указали в своем XAML) с установленным значением высоты / ширины (или привязанным к нему) по высоте / ширине холста. Затем установите HorizontalAlignment / VerticalAlignment в Center для содержимого вашей сетки.

4 голосов
/ 20 мая 2009

Я не уверен, что это будет соответствовать вашим точным требованиям, но если вы поместите холст и контент в сетку как равноправные, это даст вам центрированный результат:

<Grid>
    <Canvas Width="150" Height="300"/>
    <Button HorizontalAlignment="Center" VerticalAlignment="Center" Width="106" Content="Click"/>
</Grid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...