5

私はMVVMパターンを使用しており、ModelViewに文字列型のプロパティがあります。

文字列には、次の HTML タグを含めることができます。

<b>, </b>, <i>, </i>  

TextBlock 内のテキストの特定の部分を通常、太字、または斜体にする必要があります。

現時点では、次のように機能するヘルパー メソッドである回避策を作成しました。

  1. HTML 文字列を部分に分割します

  2. Run クラスのインスタンスを作成します

  3. タグに応じて、FontWeight または FontStyle プロパティを設定します

  4. Run クラスのインスタンスを TextBlock の Inlines コレクションに追加します

このソリューションは機能しますが、MVVM パターンと互換性がありません。

Convertors を使用することを考えていましたが、TextBlock のどのプロパティにバインドすればよいかわかりません。

この問題はどうすれば解決できると思いますか?

4

2 に答える 2

4

私が過去に行ったことは、動的に作成された TextBlock を返す ValueConverter を使用して文字列にバインドされた Content プロパティを使用して、ContentControl を使用することです。これを含む他の解決策は、ここにあります。

于 2009-03-31T17:43:07.040 に答える
1

この問題に対して私が見つけた最も簡単な解決策。

http://www.shawnduggan.com/?p=54にある BindableRichTextBox を使用することです。

  1. Converters を使用して HTML 文字列を XAML に変換し、それを FlowDocument オブジェクトにします。

  2. ドキュメントを BindableRichTextBox にバインドする

  3. RichTextBox を TextBlock のようにします (Focusable="False"、BorderThinkness="0"、BorderBrush="White"....etc)。

于 2009-04-02T15:15:06.087 に答える