2016-09-15 4 views
0

View of the buttonsсодержание TextBlock является не центром

Привет соф, недавно я сделал словарь ресурсов. Я протянул свою кнопку до высоты сетки и в ресурсном словаре в текстовом блоке секции презентатора содержимого кнопки, я изменил горизонтальное и вертикальное выравнивание содержимого в центре, как показано ниже;

<Style x:Key="RButtonStyle" TargetType="Button"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="Button"> 
       <TextBlock x:Name="b" 
         HorizontalAlignment="Center" 
         VerticalAlignment="Center"> 
        <ContentPresenter 
         HorizontalAlignment="Center" 
         VerticalAlignment="Center" /> 
       ... 

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

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

+0

Извините, но нет, вертикальное или горизонтальное выравнивание в contentpresenter уже равно этому (я думаю). Внутри contentpresenter нет вертикального/горизонтального выравнивания содержимого. Я проверил сайт, поэтому не буду дублировать. –

+0

Извините, что не упоминал. Он находится в разделе значения свойства setter. Таким образом, в TextBlock отсутствует Horizontal/VerticalContentAlignment. –

+0

http://puu.sh/rcdVE/89f346f002.png Я предполагаю, что этот снимок должен объяснить все –

ответ

0

Так, так как вы используете TextBlock напрямую, вам нужно просто установить TextAlignment свойство «Центр», чтобы получить свой центрированный текст HorizontalContentAlignment свойство не присутствует в TextBlock.

So;

<TextBlock x:Name="b" 
      HorizontalAlignment="Center" 
      VerticalAlignment="Center" 
      TextAlignment="Center"/> 

Однако, если я не ошибаюсь, вам нужно родительское панель для шаблона управления, как это должно ошибка в настоящее время, если Content из Button заполняется, так как есть более чем один ребенок в дереве объектов. Таким образом, вы также захотите добавить что-нибудь для размещения детей, как простой Grid или StackPanel и т. Д.

Нравится;

<ControlTemplate TargetType="Button"> 
    <Grid> 
     <TextBlock x:Name="b" 
       HorizontalAlignment="Center" 
       VerticalAlignment="Center" 
       TextAlignment="Center"/> 
     <ContentPresenter 
       HorizontalAlignment="Center" 
       VerticalAlignment="Center"/> 
    </Grid> 
</ControlTemplate> 

Если вы хотите использовать HorizontalContentAlignment свойство Button вам необходимо включить его в шаблон где-нибудь.

Как, например;

<TextBlock x:Name="b" 
      HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
      VerticalAlignment="Center"/> 

Надеюсь, это поможет, ура!

Смежные вопросы