ドメイン固有言語用のテキスト エディターを作成しています。RichTextBox
基本的なコントロールとしてWPF を使用しています。行番号を適切に含める方法がわかりません。誰か例を知っていますか?
4 に答える
AvalonEditは優れたツールであり、オープン ソースです。構文の強調表示や折りたたみなど、Aqistar コントロールのほぼすべての機能を備えていると思います。設定と使用が簡単。詳細については、こちらをご覧ください。
RichText は、「保護された」(編集不可の) スパンをサポートします。RTF ストリームの一部として、行番号を保護されたテキスト スパンとしてダンプできます (書式設定を行う場合)。
Win Forms では、 RichTextBox.SelectionProtected Propertyを使用できます。WPF にも同様のものが必要です。
このようにして、すべてのベースラインが正しくなり、エディターを適切に動作させるために余分な思考/プログラミングを行う必要がなくなります。編集可能なテキストは編集可能になり、行番号は編集できなくなります。
唯一の欠点は、編集のたびに RTF ストリームを再送信する必要があることです。しかし、解析フォーマット/エラー診断/その他を提供するために、すでにこれを行っていると思います。
行番号を処理するために使用するスタック パネル コントロールと左側のテキスト ブロックを使用して、複合コントロールを作成します。行数が気になり、視覚要素が多すぎる場合は、仮想モードで ListBox を使用できます。
ListBox をいつ更新し、各行の高さを計算するかを知るために、RichTextBox のさまざまなイベントに接続する必要がありますが、これは RichTextBox に添付された FlowDocument で実行できるはずです。
AqiStar のリッチ テキスト WPF コントロールを使用してみませんか? AqiStar.TextBox
私は彼らのために働いていません...私はOrenが彼のNHibernate Profiler (NHProf)でこの製品を使用していることを知っていて、彼はそれを掘り下げているようです.