16

これが私TextBlockのです:

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

そして、これが出力(スクリーンショット)です: ここに画像の説明を入力してください

なぜTextBlock終了スペースをトリミングするのですか?ただし、先頭にスペースがある場合は正常に機能します。

4

5 に答える 5

22

トリックを行うxml:space="preserve" 必要があるように見えますが( Preserving Whitespace in XAMLを参照)、Windows ストア アプリでは機能していないようです (WPF では機能します)。

非改行スペース文字を使用する&#160;と機能します

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

プロパティにコンバーターを構築して、Text末尾のスペースをチェックし、改行しないスペースに置き換えることができると思います-発生している切り捨てが早すぎないことを前提としています。

于 2013-01-15T14:35:28.370 に答える
9

で解決し<Run />ました<TextBlock />.

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

ラッピングが問題にならないのであれば、ジムのソリューション(#160;)を簡単に使用できます。

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

于 2013-01-15T18:38:19.187 に答える
4

使用してみてください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>
于 2013-01-15T14:25:02.003 に答える
1

別の解決策を見つけました!\u+A0も設定すると機能しますIsTextSelectionEnabled

これがなぜなのかはわかりませんが、まったくの驚きでした (このフィールドを追加したのは、「Universal Apps でテキストがトリミングされるのはなぜですか?」という問題に取り組んでいるときにこのフィールドを発見したからです)。

またU+205F(中程度の数学的スペース) と組み合わせて使用​​することもできIsTextSelectionEnabledます。

于 2016-05-14T03:36:12.590 に答える
0

RichTextBlock は、先頭と末尾の両方の空白を保持しているようです (WP 8.1 WinRT で):

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

ただし、指定したものに加えて、実行間に余分なスペースを追加するようです。

于 2014-06-25T23:59:41.803 に答える