2009-07-16 17 views
1

いいえ、RichTextBoxコントロールのテキストに「カスタムプロパティ」を追加しようとしています。WPF RichTextBoxカスタムテキストプロパティ

基本的な機能は、特定の単語にプロパティを設定して、単語がダブルクリックされたときにそのプロパティを検出できるようにすることですそこにいるかどうか。

新しいDPを作成してテキストに適用するのではなく、TextRangeは実際にDependencyObjectではなく、Reflectorは特定のDPを受け入れるだけであることを示しています。

残念ながら、私はこれを行うために他の "フック"を見つけることができないようです。私が必要とするすべてが封印されているか、または内部の要約が含まれているので、テキストに適用できるものから継承することはできません。

私はちょうど外部的にプロパティを持っている範囲を追跡し、テキストが更新されると更新することができますが、それはかなり恐ろしいと思うし、私は本当にこの1つのために独自のRichTextBoxを作成したくありません特徴!

任意の提案は大歓迎:-)

答えて

2

リッチテキストボックスを搭載したパーソナルexpierienceは、彼らが似ている場合、このコントロールは、あなたがして設定しようとしたカスタム情報を失うことになるという意味、実行およびスパンを組み合わせた可能性があることを私に学んだことになりますTextRange。これは、TextRangeの領域が重なり合っていたときに多く発生しました。基本的に、この問題に対してTextRangeを使用することはできません。

私たちはこのコントロールで同様の問題を抱えていましたが、実際にはちょっと汚いハックで終わってしまいました。

FlowDocumentにInlineUIContainer要素とBlockUIContainer要素を挿入することができます。それらのコンテナの1つの内部に、あなたが望む任意のUIElementを配置することができます。添付プロパティを作成し、これらの宝石をコントロールコントロール内に配置しました。私たちが今までの情報を必要に応じて

は、我々は出来上がりの情報を抽出し、ら、最寄りのコンテナ要素を見上げた...そのドラッグ..私は知っているが、それは:)働いていた。..

一つの問題かかわらず、これらのコンテナは手作業で削除ボタンを押すだけで手動で削除することができます。ただし、Unloadedイベントでこれを検出することができます。このイベントは、このとき発生します。

+0

優秀私はドキュメントに何か「注入」することができたものの、何かを見つけられなかった同様の「ハック」を見つけようとしていました。私はInlineUIContainerとBlockUIContainerを見ていきます。ありがとう! –

0

InlineUIContainers will は、preserveTextElementsがtrueの場合でも、XamlPackageのTextRange.Save呼び出しで保存されます。 InlineUIContainersを保持するためにXamlWriterを使用する必要があると思いますが、イメージをドキュメントに埋め込むことができなくなります。

私は、ドキュメントの一部にカスタムプロパティを埋め込み、画像を埋め込む方法をまだ見つけていません。

関連する問題