我将数据网格的列标题绑定到可观察的日期集合,以在列标题中显示日期和日期。这很好用。但是,我想使用字符串添加换行符或中断。怎么办呢?
<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
答案 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;&#xA;&#xA;CR / LF <代码>&amp; #x0d;&amp;#x0a; (或只是换行
& #xA;&amp;#x0a;
)的HEX表示:
因此,对于有问题的代码:
&#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={}
{0}}" />
</TextBlock>