2011-12-03 15 views
6

TextBlockに動的な色を追加することは可能ですか。 1つの色で1つの文字を、別の色で次の文字を持つ。TextBlockの複数の色

<TextBlock Text="{Binding no}" TextWrapping="Wrap" Margin="10,0,0,0" Style="{StaticResource PhoneTextSubtleStyle}" FontSize="40" Foreground="#A400C4FF" > 
    // Can we add something here to specify what colours for what chars 
</TextBlock> 

基本的には、noから動的4文字シーケンスを入力します。 ListBox内のこのTextBlockにバインドしました。異なる色の文字を持つことは可能ですか?

そうであれば、たとえば、これらの色を動的に追加することができます。ボタンをクリックすると、特定の文字が色を変えますか?

ありがとうございます。どのようなヘルプがありがとうございます。

答えて

25

:それはWP7に少しバギーだ、あなたは正しい間隔を得るためにRun.Textプロパティにスペースを追加する必要がありますデータバインドされたTextblockまたは他の多くの場所で使用できます。

試してみたかったのですが、ここでは、フォームラベルのSLの例では、必須のフィールドのテキストの横に赤いアスタリスクを置きますが、例に示すように追加することもできます。 Silverlight、WPF、UWPなどで動作する必要があります。

<TextBlock> 
     <Run Text="*" Foreground="#FFE10101"/><Run Text="Required Line" /> 
     <Run Text="Red" Foreground="Red"/> 
     <Run Text="Blue" Foreground="Blue"/> 
     <Run Text="{Binding SomeString, StringFormat='Hell ya you can make \{0\} a different color!'}" Foreground="Orange"/> 
</TextBlock> 
0

TextBlockは、複数の前景色をサポートしていません。

複数のテキストブロック(各文字に1つ)を使用してラッパーパネル内に配置することで、この現象を再現できます。その後、個々の文字/文字の色を変更することができます。
この可能性のあるパフォーマンスへの影響には注意してください。しかし、個々の文字の周りのマージンは、標準の動作を再作成するために調整する必要があります。句読点の周りには特に注意してください。

+0

Thanks It Works !! – cjds

0

私はWP7 SDKでマンゴー用に開発中です。 <実行>を使用することができます。あなたがStringFormatをやっているときに便利になることができ、次のことができ、実際に

<TextBlock>Hello<Run Foreground="Bisque" Text=" Holla "></Run>and hello again!</TextBlock>; 
+0

このRunタグのテキストを動的に設定するにはどうすればよいですか? – iamatsundere181