Textblock的内容不居中

时间:2016-09-15 16:09:53

标签: c# wpf xaml alignment block

View of the buttons

嗨,最近我制作了一本资源词典。我将按钮拉伸到网格的高度,并在按钮的内容展示器部分的文本块中的资源字典中,我将水平和垂直内容对齐方式更改为如下所示的中心;

<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" />
              ...

是的,它有效。但并不完美。请参阅上面的链接,看看我在说什么。我在哪里可以得到一些关于它的详细信息,或者你可以帮我解决这个问题吗?

除了这个之外,我没有对textblock的内容部分进行任何更改。如果您需要我的资源字典的完整代码,我可以为您发布。

1 个答案:

答案 0 :(得分:0)

因为您直接使用TextBlock,所以只需将TextAlignment属性设置为“中心”即可获得居中文本HorizontalContentAlignment属性{{1} }}

因此;

TextBlock

但是,除非我弄错了,否则您的控件模板需要一个父面板,因为如果<TextBlock x:Name="b" HorizontalAlignment="Center" VerticalAlignment="Center" TextAlignment="Center"/> 的{​​{1}}被填充,它应该会出错,因为对象树中有多个子节点。因此,您还需要添加一些内容来容纳孩子,例如简单的ContentButton等。

像;

Grid

如果您想使用StackPanel的{​​{1}}属性,则需要将其包含在模板中。

例如;

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

希望这有帮助,欢呼!