【问题标题】:WPF: Textblock as item in ComboBox: how to center the text of Textblock vertically?WPF:文本块作为组合框中的项目:如何使文本块的文本垂直居中?
【发布时间】:2015-09-10 09:18:09
【问题描述】:

我使用 WPF 4.5、Caliburn Micro 2、VS2013。我使用 TextBlock 作为 ComboBox 中的项目。

ComboBox 的高度为 80。

TextBlock 的高度为 50。

TextBlock 内文字的字体大小是标准的。

我的以下示例 xaml 代码有效,但它显示的文本未在 TextBlock 中垂直居中。 如何使文本垂直居中,无论是否将 TextBlock 的高度更改为 Auto? 提前致谢。

<ComboBox Width="150"
          Height="80"
          VerticalContentAlignment="Center"
          ItemsSource="{Binding Path=Locations}"
          SelectedIndex="0"
          SelectedItem="{Binding Path=SelectedLocation,
                                 Mode=OneWayToSource}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Height="50"
                       HorizontalAlignment="Stretch"
                       VerticalAlignment="Center"
                       Background="Aquamarine"
                       Text="{Binding Path=Address}" />
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

这是截图:

【问题讨论】:

    标签: wpf combobox vertical-alignment textblock


    【解决方案1】:

    TextBlock 不应该有高度,但它的容器应该有。如果您想为 TextBlock 设置背景颜色,请将 TextBlock 包装在 Border 或 Grid 中,然后设置它们的高度。

    喜欢

    <Grid Height="50>
         <TextBlock VerticalAlignment="Center" Text....../>
    </Grid>
    

    【讨论】:

      【解决方案2】:

      文本对齐=“中心” 或者您可以在每一边使用边距。

      【讨论】:

      • TextBlock 的 TextAlignment 是(引自 MSDN)“获取或设置一个指示文本内容水平对齐的值。”。我想在高度大于文本自身的 TextBlock 中垂直居中文本。在 TextBlock 上应用边距确实会影响 TextBlock 自身而不是其内容。
      猜你喜欢
      • 2015-02-23
      • 2013-08-31
      • 2018-09-23
      • 1970-01-01
      • 2014-03-23
      • 2015-02-28
      • 1970-01-01
      • 1970-01-01
      • 2013-10-15
      相关资源
      最近更新 更多