1

AvalonDock を使用して vs のようなドッキング スタイルを実現し、prism を使用してアプリケーションにビューを挿入します。
基本的に、ユーザーはサイドにパネルを持ち、ビューごとに 1 つのボタンをロードできます。ボタンを押すたびに、AvalonDock の DocumentPane に新しいタブを作成し、適切なビューを挿入したいと考えています。

このようなシナリオにはプリズムが適しているという印象を受けましたが、わかりません。

また、Markus Raufer による DocumentPane および DockablePane リージョン アダプターに出くわし、プロジェクトに追加して、ブートストラップにマッピングを登録しました。
これにより、ソリューションをコンパイルすることができます (そのため、私は近づいていると推測しています)。

これまでのところ、私はこれを行います:

Shellには次のような場所があります:

<avadock:DocumentPane avadock:ResizingPanel.ResizeWidth="500" Background="Transparent"
                      prism:RegionManager.RegionName="{x:Static inf:RegionNames.MainTabControlRegion}">
</avadock:DocumentPane>

私のコード ビハインドでは、ブートストラップなどの後、次のような場所があります。

m_RegionManager.Regions[RegionNames.MainTabControlRegion].Add(oneOfMyUserControls);

この行を実行してもユーザーには何も表示されませんが、2 回実行すると、ビューが既に登録されているというエラーが発生します (そのため、何かが追加されました!)。

さらに、通常の ContentControl を配置し、それをマークしてprism:RegionManager.RegionName="{x:Static inf:RegionNames.MainTabControlRegion}から、AvalonDock の DocumentPane に追加するのとまったく同じ方法で UserControl を追加すると、機能します。気紛れ

私は何を間違っていますか?
ありがとう、

バブ。

編集:
MainTabControlRegion をこのように定義すると、最初のビューが実際に追加されます。別のビュー (別の UserControl) を追加すると表示されませんが、WPF インスペクターはそこにあると言います。
私の観点からは、確かに UserControls をリージョンに追加していますが、DocumentPane に追加した UserControl ごとに新しいタブを作成する方法がわかりません。
私はそれについて何も指定していないので、おそらくコードが不足していますか?

<avadock:DocumentPane avadock:ResizingPanel.ResizeWidth="500" Background="Transparent">
    <avadock:DocumentContent Title="" prism:RegionManager.RegionName="{x:Static inf:RegionNames.MainTabControlRegion}">

    </avadock:DocumentContent>
</avadock:DocumentPane>

ユーザーコントロールを追加してそこに挿入するたびに新しいタブを作成したい。

編集 2: 解決策-->ここ

4

1 に答える 1

2

この問題は、さまざまな理由で発生する可能性があります。

または、RegionAdapter は、追加しようとしているユーザー コントロールに適していません。そのため、RegionAdapter の実装を確認して、リージョン内のビューをどのように調整し、それに合わせてカスタマイズするかをよく理解することをお勧めします。あなたの要望。

または、追加しているユーザー コントロールに特定の動作があり、ビューを DocumentPane アイテムに追加しようとすると、RegionAdapter にバグが発生しています。したがって、RegionAdapter をカスタマイズしたり、ユーザー コントロールの動作を修正したりできます。

または、単にデータ バインディングの問題です。最初の実行で何も表示されないという事実は、ちょっと奇妙です。DocumentPane プロパティ Binding をWPF Inspectorで検査してみてください。カスタム RegionAdapter を扱うとき、何度も命を救われました。

于 2011-09-14T13:40:49.537 に答える