1

TextBlock複数ので構成されるテキストの単一ブロックを作成しようとしています

- ターゲット

たとえば、次の行のように達成したい:

  • "私はListBoxでこの行を読みました。複数のテキスト形式に注意してください"

私がやろうとしている方法は

<StcakPanel Orientation="Horizontal" Width="400" >

   <TextBlock Text="I read this line in a " TextWrapping="Wrap" />
   <TextBlock Text="ListBox"  FontStyle="Italic" TextWrapping="Wrap"/>
   <TextBlock Text=", notice the multiple " TextWrapping="Wrap" />
   <TextBlock Text="text formatting" FontWeight="Bold" TextWrapping="Wrap"/>

<StcakPanel>

- 問題

TextBlocks に TextWrapping を設定し、StackPanel に Width を設定しているにもかかわらず、テキストが StackPanel に収まりません。

実行時にこのコードを生成したい。フォーマットする必要がある単語の数がわかりません。

強調表示された検索キーワードで SearchResults を表示する種類。

- 質問

上記の目標は、StackPanel などを使用してどのように達成できますか? 以下の制約があります。

  • テキストの長さは不明です
  • スタックパネル内のテキストブロックの数が不明です
  • 幅と高さは不明です

どうもありがとう

4

1 に答える 1

2

You should use a single <TextBlock> which can contain multiple <Run>s that can each have their own formatting. If you want to insert a linebreak, you can use the <Linebreak /> control.

<StackPanel Orientation="Horizontal" Width="400" >
    <TextBlock>
       <Run Text="I read this line in a" />
       <Run Text="ListBox" FontStyle="Italic" />
       <Run Text=", notice the multiple" />
       <Run Text="text formatting" FontWeight="Bold" />
    </TextBlock>
<StackPanel>

At that point you probably don't even need the <StackPanel> unless you are going to have multiple <TextBlocks> stacked on top of one another.

See this post for more information and examples: http://www.danderson.me/posts/working-with-the-wpf-textblock-control/


To databind multiple runs within a TextBlock, see this answer: Databinding TextBlock Runs in Silverlight / WP7

于 2013-05-28T14:46:41.450 に答える