私は ICSharpCode の AvalonEdit テキスト エディターを使用しており、カスタムの DocumentColorizingTransformer を持っています。
ColorizeLine 内のテキストの特定の行を中央に配置したいと思います。これは可能ですか?
行のテキストを他のすべての方法 (色、斜体、下線など) で変更する方法を理解できましたが、行のテキストの配置を変更する方法がわかりません...
私は ICSharpCode の AvalonEdit テキスト エディターを使用しており、カスタムの DocumentColorizingTransformer を持っています。
ColorizeLine 内のテキストの特定の行を中央に配置したいと思います。これは可能ですか?
行のテキストを他のすべての方法 (色、斜体、下線など) で変更する方法を理解できましたが、行のテキストの配置を変更する方法がわかりません...
これについては、エディターのソースを掘り下げる必要がありました。
まず、VisualLineTextParagraphProperties.csで、新しい内部プロパティ (デフォルトは LeftAligned) を介して TextAlignment を公開し、それを設定できるようにする必要がありました (もちろん、パブリック プロパティのゲッターから返すこともできます)。
次に、TextView.csの BuildVisualLine メソッドで、行を中央に配置する条件について documentLine のテキストをテストし、それに応じて paragraphProperties オブジェクトを変更する必要がありました。
私はparagraphPropertiesのコピーを作成しなければならなかったことに注意してください。そうしないと、中央揃えの配置が次の行に流れ込んでしまいます(指定されたparagraphPropertiesオブジェクトが再利用されているように見えるため)。
また、VisualLineElementGenerator を使用してこれを行う方法が見つからなかったことにも注意してください。