Разрыв строки TextBlock от ресурсов Dymamic - PullRequest
2 голосов
/ 15 ноября 2011

Существует некоторая разметка для ресурсов (аналог \ r \ n)

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

и для основного окна:

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

Но результат - только одна строка:"Линия1 Линия2".Что не так?

Ответы [ 2 ]

4 голосов
/ 15 ноября 2011

Просто установите xml:space="preserve" в вашем строковом ресурсе, как это, и он будет работать как положено -

<system:String xml:space="preserve" x:Key="key1">Line1&#x0d;&#x0a;Line2</system:String>
1 голос
/ 15 ноября 2011

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>
...