在 XAML 中向 Stringformat 添加换行符
Add newline to Stringformat in XAML
我将数据网格的列标题绑定到可观察的日期集合,以在列标题中显示日期和日期。这很好用。但是,我想使用字符串添加换行符或中断。如何做到这一点?
<DataGridTextColumn>
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock TextWrapping="Wrap" Text="{Binding DataContext.Week.Days[1].Date, StringFormat=ddd dd.MM.yyyy, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
这会显示以下文本:Tue 06.12.2016
我想让它显示的是
星期二
2016 年 12 月 6 日
设置 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>
对于希望在 StringFormat(或 ContentStringFormat,如果需要使用标签)中放置换行符的人们, 有办法。您可以使用:
HEX represenation of CR/LF 

(or just line feed 

):
因此,对于有问题的代码:
StringFormat=ddd
dd.MM.yyyy
StringFormat 并不总是一种直观的语法,但我更喜欢将 Vimes 解决方案与 TargetNullValue 结合使用,而不是公认的解决方案。
这意味着我只能添加一个 line-break 如果第二个 运行 有一个值
<TextBlock>
<Run Text="{Binding Message, Mode=OneTime}" />
<Run Text="{Binding Exception, Mode=OneTime, TargetNullValue='', StringFormat={}
{0}}" />
</TextBlock>
我将数据网格的列标题绑定到可观察的日期集合,以在列标题中显示日期和日期。这很好用。但是,我想使用字符串添加换行符或中断。如何做到这一点?
<DataGridTextColumn>
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock TextWrapping="Wrap" Text="{Binding DataContext.Week.Days[1].Date, StringFormat=ddd dd.MM.yyyy, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
这会显示以下文本:Tue 06.12.2016 我想让它显示的是
星期二
2016 年 12 月 6 日
设置 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>
对于希望在 StringFormat(或 ContentStringFormat,如果需要使用标签)中放置换行符的人们,
HEX represenation of CR/LF


(or just line feed

):
因此,对于有问题的代码:
StringFormat=ddd
dd.MM.yyyy
StringFormat 并不总是一种直观的语法,但我更喜欢将 Vimes 解决方案与 TargetNullValue 结合使用,而不是公认的解决方案。
这意味着我只能添加一个 line-break 如果第二个 运行 有一个值
<TextBlock>
<Run Text="{Binding Message, Mode=OneTime}" />
<Run Text="{Binding Exception, Mode=OneTime, TargetNullValue='', StringFormat={}
{0}}" />
</TextBlock>