Wpf 在XAML中将换行符添加到Stringformat

Wpf 在XAML中将换行符添加到Stringformat,wpf,xaml,data-binding,string-formatting,Wpf,Xaml,Data Binding,String Formatting,我将datagrid的columnheader绑定到日期的observablecollection,以在columnheader中显示日期和日期。这个很好用。但是,我想使用字符串添加换行符或中断符。如何做到这一点 <DataGridTextColumn> <DataGridTextColumn.HeaderTemplate> <DataTemplate> <TextBlock TextWrapping="W

我将datagrid的columnheader绑定到日期的observablecollection,以在columnheader中显示日期和日期。这个很好用。但是,我想使用字符串添加换行符或中断符。如何做到这一点

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

显示以下文字:2016年12月6日星期二 我想让它显示的是

星期二

2016年12月6日

设置文本块的
内联线
属性:

<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,如果需要使用标签)格式放置新行的人来说,有一种方法。您可以使用:

CR/LF的十六进制表示

(或只是换行
):

因此,有关守则:

StringFormat=ddd&#x0d;&#x0a;dd.MM.yyyy

StringFormat并不总是一种直观的语法,但我更喜欢Vimes解决方案与TargetNullValue相结合,而不是公认的解决方案

这意味着我只能在第二次运行有值时添加换行符

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


我必须设置
模式=单向
,但对我来说效果很好。谢谢<代码>模式=单向
已在答案中。但是,请检查修改后的XAML是否也适用于您。在文本较少的情况下也适用。再次感谢!