2 Stimmen

TextBlock Zeilenumbruch aus dymamischen Ressourcen

Es gibt einige Auszeichnungen für Ressourcen ( ist ein Analogon von \r\n )

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

und für das Hauptfenster:

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

Das Ergebnis ist jedoch nur eine Zeile: "Zeile1 Zeile2". Was ist falsch?

5voto

Rohit Vats Punkte 77062

Stellen Sie einfach die xml:space="preserve" in Ihre String-Ressource ein und es wird wie erwartet funktionieren -

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

1voto

Eli Arbel Punkte 21635

TextBlock ignoriert Leerzeichen bei der Verwendung seiner Eigenschaft Text. Die einzige Möglichkeit, Zeilenumbrüche hinzuzufügen, besteht in der Verwendung der Eigenschaft Inlines. Dies ist zwar eine schreibgeschützte Eigenschaft, die nicht direkt eingestellt werden kann, aber sie ist auch die Inhaltseigenschaft der TextBlock und kann daher wie folgt eingestellt werden:

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

Sie werden nicht in der Lage sein, Folgendes zu verwenden DynamicResource da es sich bei Inlines nicht um eine Abhängigkeitseigenschaft handelt.

Damit Leerzeichen in XML erhalten bleiben, müssen Sie außerdem Folgendes hinzufügen xml:space="preserve" zu Ihrer Zeichenkette ( xml ist ein vordefinierter Namespace, der nicht deklariert werden muss):

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X