1

静的コンテンツを選択的に色付けするには、次の提案 が適切に機能します。Silverlight/WPFでラッピングTextBlockを選択的に色付けすることは可能ですか。

ただし、私のコンテンツは実行時に生成されます。例:生成されたコンテンツが「AQuickBrownFox」の場合、「Brown」を茶色に、「Fox」を赤色に文字列化する必要があります。

キーワード-色リストは固定されており、実行時に使用できます。

私はMSDNのAdvancedTextFormattingページを見ましたが、それは私には複雑すぎます。また、そこにあるサンプルはコンパイルされません:(

これを実行できるカスタムコントロールを作成することを検討しています。誰かがこれについてどうやって行くかについて何か考えを持っているかどうか私に知らせてください。

前もって感謝します。

4

1 に答える 1

3

アイデアはあなたのリンクで説明されています:カスタムコントロールのテキストのプロパティを持っています。次に、テキストをスキャンして単語を探し、適切なランを作成します。最後に、それらすべてをTextBoxインラインコレクションに割り当てます。

この例では、単にstring.Split()を使用しました。他の句読点で分割されていると、単語を見逃す可能性があります。

Dictionary<string, Brush> colorDictionary;
string text;  // The value of your control's text property

string[] splitText = text.Split(' ', ',', ';', '-');
foreach (string word in splitText)
{
    if (string.IsNullOrEmpty(word))
    {
        continue;
    }

    Brush runColor;
    bool success = colorDictionary.TryGetValue(word, out runColor);
    if (success)
    {
        Run run = new Run(word);
        run.Background = runColor;
        textbox.Inlines.Add(run);
    }
    else
    {
        Run run = new Run(word);
        texbox.Inlines.Add(run);
    }
}
于 2010-04-27T07:09:25.357 に答える