問題タブ [avalonedit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1308 参照

readonly - AvalonEdit で行を読み取り専用にする (および保持する)

AvalonEdit コントロールで特定の行を読み取り専用にする堅牢な方法は何ですか? ユーザーは、C# または VB テンプレート ファイル内の特定のメソッド本体を変更できますが、それ以外は変更できません。ユーザーが行を追加または削除する場合、行ごとの読み取り専用状態をそのまま維持する必要があります。

winforms の WPFHost で AvalonEdit を使用しています。

0 投票する
0 に答える
496 参照

c# - ElementHost の再描画

WinFormsアプリケーションでAvalonEditを使用しています。AvalonEditは、 ElementHostを持つコントロールに配置されます。アプリケーションにはTelerik のRadDockがあり、そのウィンドウに AvalonEdit を配置できます多くの場合、ElementHostの再描画で問題が発生します。すべての症状を把握しているわけではありませんが、フォーカスを変更し、他のウィンドウをエディター上に移動することで、この問題を再現できます。この後、アプリケーションのすべての WPF コントロールが壊れて再描画できなくなります。ElementHostを強制的に再描画する唯一の方法リサイズ中です。たとえば、幅を変更すると、WPF コントロールが再描画されます。しかし、この「解決策」は受け入れられません。この問題は、x64 および x86 マシンで、ドッキング ウィンドウまたはフローティング ウィンドウ、アクティブなスクロールバーの有無にかかわらず、ウィンドウで再現できます。ElementHostを「修正」するには、アプリケーションを再起動する必要があります。
誰か私に提案はありますか?

0 投票する
3 に答える
2319 参照

c# - カスタム WPF C# プロジェクト内の AvalonEdit コントロールに大きなテキスト ファイルをロードする方法

.Net 4.0 C# WPF 基幹業務アプリを開発しており、(読み取り専用) 大きなテキスト ファイルをユーザーに表示する必要があります。TextBlockSOに記載されているように、オプションではなく、提案されたAvalonEditコントロールを試しました。AvalonEdit.Sample スタンドアロン アプリを実行すると、8,000 行の 4MB ファイルを 1 秒未満でロードできますが、AvalonEditTextEditorを WPF アプリに埋め込むと、前の とほぼ同じ 20 秒かかりTextBlockます。

UI は非常に複雑で、ツリー メニューとフォームのスプリッターがあります。フォームには、サイズ変更可能なゾーンを作成するためのスプリッターがいくつかあり、そのうちの 1 つにタブ コントロールが含まれています。タブ項目の 1 つにTextEditorAvalonEdit からのものがあります。

XAML

CS

ファイルをロードするとき、私のラップトップ i7 4 コアの CPU 使用率は 33% です。

スタンドアロン アプリとしての AvalonEdit の動作とTextEditor、カスタム WPF アプリ内での AvalonEdit の動作の違いについて何か提案はありますか?

で大きなファイル (10MB、10k 行) をロードする方法はTextEditor?

アップデート:

ビジュアル ツリー:

ビジュアルツリー

のプロパティTextEditor:

TextEditor プロパティ

指摘されたとおりにホストする ScrollViewer を削除しましたTextEditorが、同じようにパフォーマンスが低下します。

更新 2:を新しいウィンドウ に移動しTextEditorてレイアウトを縮小しましたが、それでもパフォーマンスが低下します。

新しい簡素化されたビジュアル ツリー:

ビジュアル ツリー 2

Grid列と行の定義は*.

のプロパティTextEditor:

TextEditor プロパティ

0 投票する
3 に答える
3269 参照

c# - AvalonEdit での双方向バインディングが機能しない

WPF と MVVM に基づくプロジェクトで AvalonEdit を使用しました。この投稿を読んだ後、次のクラスを作成しました。

次の XAML を使用して、このコントロールを使用しました。

しかし、バインディングは機能OneWayし、文字列プロパティを更新したり、検証ルールを実行したりしません。

期待どおりに動作するようにバインドを修正するにはどうすればよいTwoWayですか?

0 投票する
1 に答える
3581 参照

c# - ListViewのItemTemplateで使用されるAvalonEditのフックアップコマンドが機能しない

プロジェクトでAvalonEditコントロールを使用しました。Ctrl+CやCtrl+Vなどのショートカットキーを使用すると、関連するコピー/貼り付けコマンドが正常に機能します。一部のユーザーはショートカットではなく右クリックに慣れているため、使いやすさを向上させるために、これらのコマンドをコンテキストメニューで使用することにしました。制御には次のXAMLコードを使用しました。

しかし、プログラムを実行すると、これらのコマンドは常にコンテキストメニューで無効になっていることが次のように表示されます。

コンテキストメニューのスクリーンショット

この問題に最初に遭遇したとき、私は別の質問を投稿しましたが、MD.Unicornの助けを借りて(以下のコメントでわかるように)、AvalonEditをListBoxまたはListViewコマンドのItemTemplateに配置すると機能しないことに気付きました。

MD.unicornの助けを借りて、結果を再現するために次のテストコードを作成しました。

ViewModelクラスとデータテンプレートの単純なクラス

およびMainWindowのXAMLコード

このテストを試してみると、DataTemplateがコンテンツコントロールで使用されている場合、コンテキストメニューでのコマンドバインディングは正常に機能しますが、ListViewItemでは無効になっていることがわかります。また、DataTemplateのコンテキストメニューはTextBoxに対して正常に機能し、ListView自体がコマンドチェーンを本質的に中断しないことを示していることにも注意してください。

コンテキストメニューを修正し、listViewアイテムの制御コマンドに接続するにはどうすればよいですか?

0 投票する
5 に答える
12049 参照

c# - コード内の AvalonEdit 変更構文の強調表示

コード内の AvalonEdit の構文強調表示を変更したいと考えています。

XAML:

C#:

ただし、構文の強調表示は変更されません。私は何を間違っていますか?私の問題に対するより良い解決策はありますか?

0 投票する
1 に答える
252 参照

avalonedit - キャレットが行頭と最初の VisualLineElement の間に配置されないようにする (VisualColumn == 0)

ドキュメントを管理するためにAvalonEditに依存しているプロジェクトに取り組んでいます。このドキュメントの特定の行には、 AvalonEdit内から変更できない特定のインデントを使用するようにフラグが付けられています。

VisualLineElementsこれらのフラグ付き行の開始時に挿入されることで、これを達成することができました。視覚要素にはDocumentLength、インデントのサイズとサイズがあります0VisualLengthまたGetNextCaretPosition、キャレットを左側VisualLineElement(後方への移動の場合) または右側 (前方への移動の場合) に「プッシュ」する方法を上書きしました。

これは、フォーマットが縮小されたバージョンの myVisualLineElementです (要素は常に に挿入されることに注意してくださいVisualColumn == 0) :

これは、私が抱えている1つの問題を除いてうまく機能します.キャレットを行の先頭に配置できます. ユーザーの観点からは、これは非常に紛らわしいものです。さらに悪いことに、行の先頭で「削除」を押したり、インデントの最後で「バックスペース」を押したりすると、変更を加えることなく単にキャレットが移動します。私が理解しているように、キャレットを行頭に配置できなければ、削除/バックスペースの問題は解決されます ( のコードに基づくCaretNavigationCommandHandler.OnMoveCaret)。

これを修正する方法についての私の最善の推測は、true を返すようにプロパティをオーバーライドしてからHandlesLineBorders次のように変更GetNextCaretPositionすることですreturn VisualColumn + VisualLength前の行の最後の視覚的な列(これを行う方法がわかりません)

#2の最後の部分は可能ですか?もしそうなら、どうすればいいですか?そうでない場合、私が試すべき他のアプローチはありますか? VisualLineElementsドキュメントの実際のコンテンツとそれがレンダリングされる方法との間の明確な分離を維持するために、私は本当に固執したいと思います.

0 投票する
1 に答える
777 参照

wpf - AvalonEdit 特定の行を変更する方法

たとえば、15行目だけフォントを変更するにはどうすればよいですか? 私は使用しまし.ScrollTo(15,4);たが、15行目にいるときに強調表示するコマンドなどはありません(コードで動的に実行したい)。では、1行だけ編集する方法はありますか? また、その行をコードで強調表示する方法を知りたいです。ここに私のxamlがあります:

0 投票する
1 に答える
1975 参照

c# - AvalonEdit で強調表示された単語のすべてのインスタンスを選択します

AvalonEdit で選択された (強調表示された) テキストのすべてのインスタンスを強調表示したいと考えています。VS2010 はこれを行い、便利な機能です。以下のコードに従って DocumentColorizingTransformer を実装する必要があることは理解していますが、ドキュメントから選択したテキストを取得する方法がわかりません。選択情報は「CurrentContext」では利用できません。

以下のコードは、「AvalonEdit」のすべてのインスタンスを検索します。選択した (強調表示された) テキストのすべてのインスタンスを見つけるにはどうすればよいですか。