で\n
改行する方法はありTextBlock
ますか?
<TextBlock Text="line1\nLine2" />
または、Text
属性内で中間の改行を強制するより良い方法はありますか?
<LineBreak />
これは機能しません。Text
テキスト文字列が外部ソースから設定されているため、属性の値である必要があります。
私は精通してLineBreak
いますが、私が探している答えではありません。
で\n
改行する方法はありTextBlock
ますか?
<TextBlock Text="line1\nLine2" />
または、Text
属性内で中間の改行を強制するより良い方法はありますか?
<LineBreak />
これは機能しません。Text
テキスト文字列が外部ソースから設定されているため、属性の値である必要があります。
私は精通してLineBreak
いますが、私が探している答えではありません。
回答:
私はこれが古い質問を解決することを知っていますが、同じ問題がありました。私の解決策は、HTMLエンコードされたラインフィードを使用することでした(&#10;
)。
Line1&#10;Line2
のように見えます
Line1
Line2
HTMLエンコードされた文字の詳細については、w3schoolsをご覧ください。
<TextBlock>
との間のコンテンツとしてテキストが指定されている</TextBlock>
場合は、そうする必要があり<LineBreak/>
ます。
内側の作品Text
属性:<TextBlock Text="..." />
これを試して:
<TextBlock>
line1
<LineBreak />
line2
</TextBlock>
行を2つのタグに分割してみませんか?
<StackPanel>
<TextBlock Text="Line1" />
<TextBlock Text="Line2" />
</StackPanel>
<LineBreak />は、GridやStackPanelなどのコレクション内にある場合は機能しません。このような場合、次のように機能します。
<HyperlinkButton
Content="Apply and restart this pplication! Note that modifying these settings requires the application to be restarted." />
CRLF単純な方法= !
!
-TextBlock、HyperlinkTextなどのすべてのwpf、xaml、silverlightコントロールで作業する
これもうまくいきます:
<TextBlock>
<Run Text="My nice text"/>
<LineBreak/>
<LineBreak/>
<Run Text="After some linebreaks, I'm back!"/>
</TextBlock>
私はパーティーに遅れましたが、これは多かれ少なかれ私がやった方法です(私のItemSourceはフォーマットされていないプレーンな文字列であり、何も 'convertBack'する必要がなかったことに注意してください)。
public class SpaceToLineBreakConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return (!String.IsNullOrEmpty(value as string))
? new Regex(@"\s").Replace(value as string, "\n")
: value;
}
public object ConvertBack(object value, Type targetType, object parameter,System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
同様の問題があり、xamlマークアップの文字列をTextBlockにバインドしたいと思っていました。基本的に、宣言型マークアップをTextBlock内に文字列に格納して、後で使用できるようにします。
これが私がやった方法です:InlineCollectionをバインド可能にするためにTextBlockをサブクラス化し、文字列とInlineCollection(または実際にはInlinesの汎用リスト)の間にConverterを書きました。