【问题标题】:Textblock's content is not centered文本块的内容不居中
【发布时间】:2017-01-23 18:04:47
【问题描述】:

View of the buttons

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

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

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

除此之外,我没有更改文本块内容部分的任何内容。如果您想要我的资源字典的完整代码,我可以为您发布。

【问题讨论】:

  • 抱歉,没有,contentpresenter 中的垂直或水平对齐方式已经等于(我猜)。 contentpresenter 内部没有垂直/水平内容对齐。我检查了网站,所以我不会重复。
  • 抱歉没有提及。它位于设置器的属性值部分。所以TextBlock中不存在Horizo​​ntal/VerticalContentAlignment。
  • puu.sh/rcdVE/89f346f002.png 我想这张快照应该能解释一切

标签: c# wpf xaml alignment block


【解决方案1】:

因此,由于您直接使用TextBlock,您只需将TextAlignment 属性设置为“Center”即可使您的文本居中,因为HorizontalContentAlignment 属性在TextBlock 中不存在。

所以;

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

但是,除非我弄错了,否则您的控件模板需要一个父面板,因为如果填充了 ContentButton,它当前应该会出错,因为对象树中有多个子项。因此,您还需要添加一些东西来容纳孩子们,例如简单的 GridStackPanel 等。

喜欢;

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

如果您想使用ButtonHorizontalContentAlignment 属性,您需要将它包含在模板中的某个位置。

例如;

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

希望这会有所帮助,干杯!

【讨论】:

    猜你喜欢
    • 2019-09-27
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    相关资源
    最近更新 更多