WPF-WrapPanel上的Horizo​​ntalAlignment

时间:2018-12-07 09:45:35

标签: c# wpf

我知道如何对齐文本框,但是在WrapPanel的情况下,内部有多个文本框,我无法设法找到使整个文本居中对齐的方法,还试图通过内部TextBlocks来制作一个TextBlock ,但没有办法:

<GridViewColumn Header="{x:Static p:Resources.Priorite}" Width="70">
  <GridViewColumn.CellTemplate>
    <DataTemplate>
      <WrapPanel HorizontalAlignment="Center">
        <TextBlock HorizontalAlignment="Center" TextAlignment="Center">
          <TextBlock Text="{Binding PrioriteMin}"/>
          <TextBlock Text=" - " />
          <TextBlock Text="{Binding PrioriteMax}"/>
        </TextBlock>
      </WrapPanel>
    </DataTemplate>
  </GridViewColumn.CellTemplate>
</GridViewColumn>

3 个答案:

答案 0 :(得分:1)

您的问题是,创建显示单元格内容的FrameworkElement时,它会复制相应ListViewItem中的对齐方式属性。导致HorizontalAlignment.Left

您可以在此处详细了解每个值的作用:https://docs.microsoft.com/de-de/dotnet/framework/wpf/advanced/alignment-margins-and-padding-overview

因此,要实现所需的功能,必须将HorizontalContentAlignment上的Stretch设置为ListViewItem

<ListView>
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
        </Style>
    </ListView.ItemContainerStyle>
</ListView>

另请参阅In WPF Stretch a control to fill a ListView Column

答案 1 :(得分:-2)

您可以使用样式来定位WrapPanel中的TextBlock:

<WrapPanel>
     <WrapPanel.Resources>
            <Style TargetType="TextBlock">
                <Setter Property="HorizontalAlignment" Value="Center"/>
            </Style>
     </WrapPanel.Resources>
     <TextBlock>MyText</TextBlock>
     <TextBlock>MyText2</TextBlock>
<WrapPanel>

尽管我可能误解了该要求,但我认为上述方法对您来说应该可行。

答案 2 :(得分:-3)

您提供的示例似乎使水平居中对齐就好了!

<WrapPanel HorizontalAlignment="Center">

做到了,您甚至不需要

HorizontalAlignment="Center" TextAlignment="Center"

针对您的textBlock