2013-01-15 5 views
13

は私TextBlockTextBlockがテキストの終了スペースをトリムするのはなぜですか?ここ

<StackPanel Orientation="Horizontal" Margin="0,3,0,0"> 
    <TextBlock Text="6 or more characters, at least one letter and a number, " FontFamily="Segoe UI" Foreground="#000000" FontSize="13"/> 
    <TextBlock Text="no symbols" FontFamily="Segoe UI" Foreground="#000000" FontSize="13"/> 
</StackPanel> 

であり、ここでの出力は、(スクリーンショット) enter image description here

なぜTextBlockトリムが終わるスペースのですか?しかし、私が先頭のスペースを与えるとうまく動作します。

答えて

16

はトリックを行う必要がありますそれはxml:space="preserve"のように見える(Preserving Whitespace in XAMLを参照)が、それは、Windowsストアアプリで動作していないようです(それはWPFでありません)。あなたは非改行空白文字&#160;を使用している場合、それは私があなたに後続スペースをチェックし、非破壊スペースに置き換えるText財産上のコンバータを構築しようとすることができたとし

<TextBlock Text="6 or more characters, at least one letter and a number,&#160;&#160;&#160;&#160;&#160;&#160;&#160;" .... 

に動作し

- 仮定起こっている切り詰めがあまりに早く起こることはありません。

+0

非破壊空間はトリックですが、 'space'プロパティは簡単です:( –

+0

WinRT 8.1からの更新。' xml:space'はまだ動作せず、この解決策はありません。 –

+4

これは( を使用して)現在Windows 10 Universalアプリケーションでは動作していないようです。Textプロパティを正しく設定するためにTextプロパティを設定するのではなく、開始タグと終了タグの間のコンテンツとして単純に設定する必要がありました。 – matthewsheets

3

てみ使用xml:space="preserve"

<StackPanel Orientation="Horizontal" Margin="0,3,0,0"> 
    <TextBlock xml:space="preserve" Text="6 or more characters, at least one letter and a number, " FontFamily="Segoe UI" Foreground="#000000" FontSize="13"/> 
    <TextBlock xml:space="preserve" Text="no symbols" FontFamily="Segoe UI" Foreground="#000000" FontSize="13"/> 
</StackPanel> 
+0

+1スペース属性です。しかし、それは店舗アプリケーションでは機能しません –

9

<Run /><TextBlock />.で解決しました。ラッピングは問題ではなかった場合は、(#160)

<StackPanel Orientation="Horizontal" Margin="0,3,0,0"> 
    <TextBlock FontFamily="Segoe UI" Foreground="#000000" FontSize="13"> 
     <Run Text="6 or more characters, at least one letter and a number, " /> 
     <Run Text="no symbols" /> 
    </TextBlock> 
</StackPanel> 

、ワードラップはまだ私は簡単にジムのソリューションを使用することになり

<StackPanel Orientation="Horizontal" Margin="0,3,0,0"> 
    <TextBlock FontFamily="Segoe UI" Foreground="#000000" FontSize="13" 
     Width="200" TextWrapping="Wrap"> 
     <Run Text="6 or more characters, at least one letter and a number, " /> 
     <Run Text="no symbols" /> 
    </TextBlock> 
</StackPanel> 

動作します。

あなたの考えでは、HTMLがどのようにスペースを処理して保存するかを考えてください。これは、XAMLがスペースを処理して保持する方法でもあります。もちろん、TextBlockの内部では文字通り扱われると思うでしょうか?まあ、それはそうです。少なくとも解決策があります。

<RichTextBlock> 
<RichTextBlock.Blocks> 
    <Paragraph > 
    <Paragraph.Inlines> 
    <Run Text="trailing " /><Run Text="bbb" /><Run Text=" leading" /> 
    </Paragraph.Inlines> 
    </Paragraph> 
</RichTextBlock.Blocks> 
</RichTextBlock> 

しかし、また、あなたが指定したもののに加えて、実行間の余分なスペースを追加しているようだ:

+0

+1良い答え:) –

+0

Jerryなぜ私がこれをやっていたのは、私のアプリが通常のモードでテキストが** '6であるべきときです。少なくとも1つの文字と数字、no symbols **、スナップビューモードでは** 6文字以上、少なくとも1文字と数字、 のシンボルはありません**。私はこれをしました。しかし、私はこれらのテキストが '.resw'ファイルから来てくれることを望みます。言い換えれば、** ** 'のようなものです。 –

+0

** [これと関連した質問はこちら](http://stackoverflow.com/q/14343376/468724)** –

0

RichTextBlockは(WP 8.1 WinRTの中で)の両方の先頭と末尾の空白を保持するようです。

1

私は別の解決策を見つけました。 \u+A0は、IsTextSelectionEnabledを設定したときに機能します。

なぜ私はこの驚きがありましたか(私はそれを発見したばかりで、フィールドを追加しました。ユニバーサルアプリケーションでテキストがトリミングされるのはなぜですか?問題)。

U+205F(中程度の数学的な空間)もIsTextSelectionEnabledと連動します。

+0

2016-10-06現在、IsTextSelectionEnabledトリックはもう動作しませんが、 – rsclient

関連する問題