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: 解決策-->ここ