Странное выравнивание TextBlock в ViewBox

Я пытаюсь центрировать цифру в ViewBox и получаю крайне разочаровывающие результаты. Я пытался центрировать его с помощью TextAlignment, HorizontalAlignment, VerticalAlignment и т. д. Когда я правильно центрирую одну цифру (например, 3), другая смещается от центра (например, 4):

введите здесь описание изображения

Как видите, я использую следующее:

    <Border x:Name="bdrMain" Background="#FF0095E2">
        <Grid>
            <Viewbox Stretch="Uniform">
                <Ellipse x:Name="elpRing" Stroke="White" Margin="1" StrokeThickness="0.75" Width="12" Height="12"/>
            </Viewbox>

            <Viewbox Stretch="Uniform">
                <TextBlock x:Name="txtValue" FontFamily="Assets/Fonts/HelveticaNeueLTStd-Th.otf#HelveticaNeueLT Std Thin" Text="3" FontWeight="Thin"/>
            </Viewbox>
        </Grid>
    </Border>

Кто-нибудь знает, почему центрирование такое сложное???


person Maximus    schedule 03.11.2013    source источник


Ответы (1)


При использовании ViewBox для подобных вещей гораздо проще работать с большими элементами и уменьшать размер окна просмотра. Кроме того, наличие одного окна просмотра, которое увеличивает (или уменьшает) размер одного элемента, легче компоновать (к тому же, оно более эффективно во время выполнения).

Попробуй это:

<Border x:Name="bdrMain"
        Background="#FF0095E2">
    <Viewbox>
        <Grid>
            <Ellipse x:Name="elpRing"
                        Stroke="White"
                        StrokeThickness="2"
                        Width="32"
                        Height="32" />

            <TextBlock x:Name="txtValue"
                        Margin="1,2,0,0"
                        FontFamily="Assets/Fonts/HelveticaNeueLTStd-Th.otf#HelveticaNeueLT Std Thin"
                        Text="3"
                        FontSize="32"
                        HorizontalAlignment="Center"
                        VerticalAlignment="Center" />

        </Grid>
    </Viewbox>
</Border>

В настоящее время у меня нет шрифта на моем компьютере, поэтому настройте поля текстового блока, чтобы отцентрировать его. Вы можете перейти на 64x64 в размере эллипса - увеличить толщину обводки до 4 и размер шрифта в текстовом блоке до 64 или около того.

person XAMeLi    schedule 03.11.2013
comment
Это немного лучше, не идеально. Кажется, шрифт вызывает проблемы. Я поиграю с вашим ответом и попытаюсь получить правильные поля/отступы. Спасибо! - person Maximus; 03.11.2013