【问题标题】:WPF - Can't right-align a TextBlock when using StringFormatWPF - 使用 StringFormat 时无法右对齐 TextBlock
【发布时间】:2014-01-24 16:37:02
【问题描述】:

我在 GridViewColumn 中有一个 TextBlock。我使用 StringFormat 格式化为货币。这会导致该字段左对齐。我无法正确对齐。尝试了 Horizo​​ntalAlignment 和 TextAlignment 但没有任何效果。

<TextBlock HorizontalAlignment="Right" Text="{Binding Path=Amount, StringFormat={}{0:€ # ##0}}" />
<TextBlock TextAlignment="Right" Text="{Binding Path=Amount, StringFormat={}{0:€ # ##0}}" />

如果我这样做from this post,它可以工作,但会右对齐所有列。我希望数字右对齐,日期居中,文本左对齐。

<ListView.Resources>  
    <Style TargetType="ListViewItem">  
        <Setter Property="HorizontalContentAlignment" Value="Right" />  
    </Style>
</ListView.Resources>

请问有什么线索吗?

【问题讨论】:

    标签: wpf xaml


    【解决方案1】:

    HorizontalContentAlignment 设置为Stretch。这将起作用:

    <ListView>
       <ListView.Resources>
          <Style TargetType="ListViewItem">
             <Setter Property="HorizontalContentAlignment" Value="Stretch" />
          </Style>
       </ListView.Resources>
       <ListView.View>
          <GridView>
             <GridViewColumn>
                <GridViewColumn.CellTemplate>
                   <DataTemplate>
                      <TextBlock HorizontalAlignment="Right"
                           Text="{Binding Path=Amount, StringFormat={}{0:€ # ##0}}"/>
                   </DataTemplate>
                </GridViewColumn.CellTemplate>
             </GridViewColumn>
          </GridView>
       </ListView.View>
     </ListView>
    

    【讨论】:

    • 做得很好。不知道我是否明白为什么。也感谢乔尔的相同回答。
    【解决方案2】:

    将你的资源改为Horizo​​ntalContentAlignment 为Stretch,这将允许ListView 中每个单元格的内容占据整个空间。然后你的 Horizo​​ntalAlignment 属性就会起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-10
      • 2014-05-23
      • 2014-04-01
      • 1970-01-01
      • 2018-02-12
      • 1970-01-01
      • 2010-12-02
      相关资源
      最近更新 更多