在XAML中向Stringformat添加换行符

时间:2016-12-17 20:23:53

标签: wpf xaml data-binding string-formatting

我将数据网格的列标题绑定到可观察的日期集合,以在列标题中显示日期和日期。这很好用。但是,我想使用字符串添加换行符或中断。怎么办呢?

<DataGridTextColumn>
    <DataGridTextColumn.HeaderTemplate>
        <DataTemplate>
            <TextBlock TextWrapping="Wrap" Text="{Binding DataContext.Week.Days[1].Date, StringFormat=ddd dd.MM.yyyy, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>

显示以下文字:星期二06.12.2016 我希望它显示的是

周二
06.12.2016

3 个答案:

答案 0 :(得分:3)

设置TextBlock的Inlines属性:

<TextBlock DataContext="{Binding DataContext.Week.Days[1].Date,
                         RelativeSource={RelativeSource AncestorType=DataGrid}}">
    <Run Text="{Binding Mode=OneWay, StringFormat=ddd}"/>
    <LineBreak/>
    <Run Text="{Binding Mode=OneWay, StringFormat=dd.MM.yyyy}"/>
</TextBlock>

答案 1 :(得分:1)

对于希望在StringFormat(或ContentStringFormat,如果您需要使用Label)中添加换行符的人,此答案有办法。您可以使用:

&#xA;&#xA;
&#xA;

CR / LF <代码>&amp; #x0d;&amp;#x0a; (或只是换行&amp;#x0a; )的HEX表示:

& #xA;
&#xA;&#xA;

因此,对于有问题的代码:

&#xA;&#xA;
  StringFormat = ddd&amp; #x0d ;&安培;#X0A; DD.MM.YYYY&#XA;  
&#XA;

答案 2 :(得分:0)

StringFormat并不总是一种直观的语法,但我更喜欢将Vimes解决方案与TargetNullValue结合使用,而不是接受的解决方案。

这意味着我只能在第二次运行具有值的情况下添加换行符

<TextBlock>
  <Run Text="{Binding Message, Mode=OneTime}" />
  <Run Text="{Binding Exception, Mode=OneTime, TargetNullValue='', StringFormat={}&#x0d;&#x0a;{0}}"  />
</TextBlock>