Как выровнять текст кнопки WPF по центру по горизонтали? - PullRequest
0 голосов
/ 23 мая 2019

У меня есть простая проблема, которую я ничего не нашел.У меня есть кнопка в главном окне XAML WPF (Visual Studio 16.1), и мне просто нужно текстовое содержимое для выравнивания по центру.В окне дизайнера это выглядит хорошо, как видно на первом изображении.Когда я запускаю окно (либо отладку, либо выпуск), я получаю второе изображение (дополнительный левый край - просто артефакт обрезки).

In Designer

Running App

Это как если бы добавлен отступ.Я долго искал и пробовал множество предложений, которые обычно представляют собой какую-то форму установки Padding или HorizontalContentAlignment в XAML или в коде, но безрезультатно.Даже без фона и границ ничего не работает.Вот XAML:

                <Button x:Name="btRefresh" Content="Refresh" 
                Grid.Column="2" Grid.Row="1" 
                Click="btRefresh_Click" 
                HorizontalAlignment="Stretch"
                Margin="5,0"
                Background="{StaticResource ccButton1}"
                BorderBrush="{StaticResource BorderColor1}"
                BorderThickness="2"
                FontWeight="SemiBold"
                />

Я также попытался отредактировать шаблон по умолчанию, но там нет ничего, что могло бы повлиять на простое выравнивание.Помимо всего этого, он отлично выравнивается в конструкторе, поэтому на самом деле нет другого свойства, которое нужно настраивать в соответствии со всей документацией.

Я не могу быть единственным, кто сталкивается с этим, потому что это такая простая кнопка.

Спасибо за любую помощь!

JCK

Ответы [ 3 ]

0 голосов
/ 23 мая 2019

использование VerticalContentAlignment = "Центр" и HorizontalContentAlignment = "Центр" свойства

<Button x:Name="btRefresh" Content="Refresh" 
        Grid.Column="2" Grid.Row="1" 
        Click="btRefresh_Click" 
        HorizontalAlignment="Stretch"
        Margin="5,0" VerticalContentAlignment="Center" 
        HorizontalContentAlignment="Center"
        Background="{StaticResource ccButton1}"
        BorderBrush="{StaticResource BorderColor1}"
        BorderThickness="2"
        FontWeight="SemiBold"
        />

не работает, значит, на вашу кнопку будет влиять другой стиль.

0 голосов
/ 24 мая 2019

Спасибо всем за ваши ответы! DRap и Andy были правы относительно противоречивого стиля, особенно Andy в определении стиля текстового блока. У меня есть текстовый блок уровня приложения слева, равный 10, поэтому я назвал этот стиль и применил его к каждому текстовому блоку. Было бы неплохо просто изменить стиль кнопки, подобный приведенному ниже, который также работал, но я не мог понять синтаксис для включения его там.

            <Button x:Name="btRefresh"  
                Grid.Column="2" Grid.Row="1" 
                Click="btRefresh_Click" 
                Style="{DynamicResource ButtonNrml}">
                <Button.Content>
                  <StackPanel>
                    <TextBlock Margin="0" Text="Refresh Data"/>
                  </StackPanel>
                </Button.Content>
             </Button>

Но, тем не менее, если существует противоречивый стиль, не должен ли он отображаться в конструкторе, а не только во время выполнения?

Еще раз спасибо! JCK

0 голосов
/ 23 мая 2019

Из того, что я вижу, есть ли у вас еще один СТИЛЬ, определенный для кнопок в вашем проекте? или другая тема применена? Если так, может быть, у этого есть замена по умолчанию, которая вызывает проблемы для вас? Я не верю синий фон и черная рамка по умолчанию? Поэтому я обнаружил, что вы идентифицировали два статических ресурса для цветов, специфичных для вашего проекта. МОЖЕТ ЛИ СТИЛЬ, который может вызвать искажение ваших потребностей?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...