2011-10-27 34 views
0

Silverlight TextblockまたはRichTextBoxでテキストを強調表示する必要があります。私はRTBのテキストランにタグを追加しようとしましたが、彼らは単にのようなテキストで表示:私はちょうどこのようなテキストを選択しようとしたSilverlightのハイライトテキスト(背景色は黄色)

Some <Bold>text</Bold> in a RTB 

myRTB.Selection.Select(textPtr1, textPtr2); 

をが、そのは、標準青灰色の色で表示されます。私は背景色を黄色にする必要がありますが、私はRunのForeground色のみを変更できるように見えます。それはなぜ、私のためのアイデアですか?

UPDATE:

return String.Format("<Run Foreground=\"Red\">{0}</Run>", value.ToString()); 

それでもTextBlockのはただのタグではなく、フォーマットされたテキストを示しています

私はこのようなファイル名を指定して実行を追加して値変換を持つだけのTextBlockを使用してみました。

+0

私はwrognていないよ場合:<ランたfontWeight =「太字」>テキスト – NestorArturo

+0

RTBがちょうど内のテキストに表示するためのタグを原因とするためにバインドされていることをテキストに任意のXMLタグを追加しますRTB。 – Graeme

+0

Silverlightでテキストをプログラムで強調表示するソリューションを探しています。何かお手数ですか? – Graeme

答えて

0

私はあなたが境界線であなたのtextBlockをラップし、mouseEntermouseLeave上の境界線の色を変更することができますシルバーのTextBlock

でテキストをハイライトする必要があります。

XAML

<Border x:Name="myTxtBorder" MouseEnter="myTxtBorder_MouseEnter" MouseLeave="myTxtBorder_MouseLeave"> 
     <TextBlock Text="Hover me and yellow you'll see!"/> 
    </Border> 

コードの後ろには:

Private Sub myTxtBorder_MouseEnter(sender As System.Object, e As System.Windows.Input.MouseEventArgs) 
     myTxtBorder.Background = New SolidColorBrush(Colors.Yellow) 
    End Sub 

    Private Sub myTxtBorder_MouseLeave(sender As System.Object, e As System.Windows.Input.MouseEventArgs) 
     myTxtBorder.Background = New SolidColorBrush(Colors.White) 
    End Sub 
+0

しかし、特定の単語だけを強調表示する必要があるので、実行時にこれらの特定の単語に枠を追加する必要があります。どうやってやるの? – Graeme

+0

@Graeme:境界線アプローチを使用すると、強調表示したい単語を別のtextBlockに抽出し、境界線で囲む必要があります。テキストがたくさんある場合は、多くのコントロールで終わるでしょうが、それは良いことではありません。いくつのテキストを扱っていますか? – MichaelS

+0

テキストボックスはリストボックスにあり、それぞれには数百語の単語が含まれます。リストには20項目があり、それぞれの項目には2〜3回の強調表示が付きます。 – Graeme