Wpf 在XAML中将换行符添加到Stringformat
我将datagrid的columnheader绑定到日期的observablecollection,以在columnheader中显示日期和日期。这个很好用。但是,我想使用字符串添加换行符或中断符。如何做到这一点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
<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
dd.MM.yyyy
StringFormat并不总是一种直观的语法,但我更喜欢Vimes解决方案与TargetNullValue相结合,而不是公认的解决方案
这意味着我只能在第二次运行有值时添加换行符
<TextBlock>
<Run Text="{Binding Message, Mode=OneTime}" />
<Run Text="{Binding Exception, Mode=OneTime, TargetNullValue='', StringFormat={}
{0}}" />
</TextBlock>
我必须设置模式=单向
,但对我来说效果很好。谢谢<代码>模式=单向
已在答案中。但是,请检查修改后的XAML是否也适用于您。在文本较少的情况下也适用。再次感谢!