問題タブ [avalondock]
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.
wpf - PrismRegionAdapter-ビューの削除と追加
AvalonDockを含むprism/wpf/mefソリューションがあります。RegionAdapterBase<Pane>
AvalonDockからのペインの作成と削除を処理するクラスを作成しました。
これが私が遭遇している問題です:
- メニューのボタンをクリックすると、ビューがリージョンに登録され、
DocumentPane
- AvalonDockの閉じるボタンをクリックしてタブを閉じ、ビューを削除します
- 同じメニューボタンをクリックして、もう一度追加します
- エラーが発生しました:
「指定された要素はすでに別の要素の論理的な子です。最初に切断してください。」
だから...これは私が削除する必要がある何かが残っていることを私に教えてくれますが、それがどこにあるのかわかりません。これが私のRegionAdapterからのコードです:
デバッグ行から、DocumentPane
およびリージョンビューが適切に破棄されています...クリックしてアイテムをビューに追加し直すと、次のような行に上記のエラーメッセージが表示されます。
メニューボタンが押されたときに実行されるモジュールのコードは次のとおりです。
私が欠けているものはありますか?
c# - ExecutionEngineException がキャッチされない
以下のコードを実行しているときに ExecutionEngineException がキャッチされない理由が気になります。
WriteLine に到達することはありません。この例外をキャッチする方法はありますか?
注: DockablePanes の 1 つが AutoHide モードで、表示されていて、ユーザーが wpf ウィンドウを閉じようとしているときに、AvalonDock によって例外がスローされることはわかっています。
更新:この例外に関する msdnのコメント セクションを読みました:
CLR は、マネージ コードがキャッチできるような方法でこの例外をスローすることはありません。
したがって、問題は、そのような後にアプリケーションをうまく閉じる方法です。
c# - フローティング DockableContent 位置
私の用語が正しいかどうかはわかりませんが、(DockableContent) タブをドッキング解除すると、それがツールウィンドウであるかのように、デスクトップ上に浮かんだままにすることができます。Top と Left は利用可能なプロパティではないようです。画面上の位置を特定するにはどうすればよいですか?
mvvm - avalondock mvvm
avalondockの使用は、MVVM環境ではかなり難しいようです。DocumentPaneをシェルビューからデタッチするとすぐに、対応するデータコンテキストが失われ、ビューが空になります。再接続すると、通常の状態に戻ります。
誰かが解決策を持っていますか?
wpf - DockableFloatingWindow の最大化と Aero スナップ
ドッキング解除されたフローティング AvalonDock ウィンドウを最大化する機能を提供する次のコードがあります。
これにAero Snap機能を追加するにはどうすればよいですか?
c# - Avalon DockドキュメントコンテンツはC#を閉じる前に保存します
私はnotepad++に似たプロジェクトでAvalonDockを使用していますが、ドキュメントをドキュメントコンテンツとして持っていますが、ユーザーがドキュメントコンテンツを閉じるときに直面する問題があります。
彼/彼女が閉じる前にドキュメントを保存したい場合、私は彼にポップアップメッセージを取得してほしい。
どうすればこれを達成できますか?
前もって感謝します。
c# - AvalonDockDocumentContentはガベージコレクションされていません
AvalonDockフレームワークを利用するアプリケーションを作成しました。AvalonDock.DocumentContent
重要な部分は、派生エディターを使用してドメインモデルエンティティを編集する機能です。問題が発生し、エディターを閉じてコレクションから削除した後、エディターがガベージコレクションされていないことがわかりましたDockingManager.Documents
。
無駄な検索を行った後、次の方法で再作成できる小さなテストアプリケーションを作成しました。
- Visual Studio(私は2008を使用しています)で、
AvalonDockLeak
;という名前の新しいWPFアプリケーションを作成します。 - AvalonDockライブラリへの参照を追加します(私のバージョンは1.3.3571.0です)。
Document
;という名前の新しいUserControlを追加します。Document.xmalを次のように変更します。
/li>Document.xmal.csを次のように変更します。
{を開くメソッドにブレークポイントを追加して問題を診断し、ヒットするかどうかを確認できるようにするために追加したデストラクタ。テストアプリケーションを閉じるときに常に実行されますが、それ以前には実行されません。
次に、Window1.xamlを次のように変更します。
/li>Window1.xaml.csを次のように変更します。
/li>
この単純なアプリケーションには、リークも含まれています。これは、開始時のブレークポイント~Document()
{を閉じた後にヒットしないことで確認できますDocumentContent
。
今私がしたいのは、これは既知の問題であり、それを防ぐ方法はありますか?オブジェクトが久しぶりにガベージコレクションされた場合、これを促進するために何ができますか?ちなみに、GC.Collect()を呼び出しても役に立ちません。
prism - レイアウトの復元はモジュールの内容を復元しません
私はAvalonDocでプリズムを使用しています。
レイアウトを復元しようとすると(メニューボタン「RestoreLayout」のイベントハンドラーで)
dockManager.RestoreLayout(FileName);
正しいレイアウト構造を取得しましたが、すべてのリージョンのコンテンツが空になりました。モジュールなどにリロードする必要がありますか?
私のxamlコードのavalondocコードは次のようなものです。
avalondock - AvalonDockマウスの右クリックメニュー
DockablePane(AvalonDock.dllのUI)でマウスの右クリックメニューを無効にする方法?助けてください、私はそれが必要です。プロジェクトに多言語を提供したいのですが、それは英語のみです