TextBlock从动态资源中断行

时间:2011-11-15 08:44:24

标签: wpf xaml newline textblock

资源有一些标记(
是\ r \ n的模拟)

    <Application.Resources>
      <system:String x:Key="key1">Line1&#x0d;&#x0a;Line2</system:String>
    </Application.Resources>

和主窗口:

   <Grid>
      <TextBlock Text="{DynamicResource key1}"/>
   <Grid>

但结果只有一行:“Line1 Line2”。有什么问题?

2 个答案:

答案 0 :(得分:4)

只需在您的字符串资源中设置xml:space="preserve",就可以按预期工作 -

<system:String xml:space="preserve" x:Key="key1">Line1&#x0d;&#x0a;Line2</system:String>

答案 1 :(得分:1)

TextBlock在使用Text属性时忽略空格。添加换行符的唯一方法是使用Inlines属性。虽然这是一个无法直接设置的只读属性,但它也是TextBlock的内容属性,因此可以这样设置:

<TextBlock>
    <StaticResource ResourceKey="key1" />
</TextBlock>

但是,您将无法使用DynamicResource,因为Inlines不是依赖属性。

此外,要以XML格式保留空格,您需要将xml:space="preserve"添加到字符串中(xml是预定义的命名空间,无需声明它):

<system:String xml:space="preserve" x:Key="key1">Line1&#x0d;&#x0a;Line2</system:String>