0

複合アプリケーション ガイドライン (バージョン 2、2009 年 2 月) を使用しています。

1 つのリージョン、Bootstrapper、および 2 つのビューを持つ Employee モジュールを使用してシェルを構築しました。どちらも RegionManager をシェルの 1 つのリージョンに追加する必要があります。

ただし、RegionManager に最後に追加されたビューのみがリージョンに表示されます。

両方のビューがシェルの領域に表示されるようにするには、何を変更する必要がありますか?

namespace EmployeeModule
{
    public class EmployeeModule : IModule
    {
        private readonly IRegionManager _regionManager;

        public EmployeeModule(IRegionManager regionManager)
        {
            _regionManager = regionManager;
        }

        public void Initialize()
        {
            _regionManager.RegisterViewWithRegion(Infrastructure.RegionNames.MainRegion, typeof(Views.EmployeesView.EmployeesView));
            _regionManager.RegisterViewWithRegion(Infrastructure.RegionNames.MainRegion, typeof(Views.EmployeesListView.EmployeesListView));
        }
    }
}
4

2 に答える 2

3

まあ、あなたの解決策が正確ではないかどうかはわかりません。それは間違いなく醜いです。あなたが直面している問題は、グリッドまたはキャンバスを領域としてマークしていることだと思います。これは問題ありませんが、キャンバスの X オフセットと Y オフセット、またはグリッドの列/行を指定できない限り、これらのケースでは要素が隠れてしまいます。

Prism は、リージョン用に 3 種類のアダプタを提供します。MSDNを参照してください。

  1. ContentControlRegionAdapter. このアダプターは、System.Windows.Controls.ContentControl 型のコントロールと派生クラスを適応させます。
  2. SelectorRegionAdapter。このアダプターは、System.Windows.Controls.TabControl コントロールなど、クラス System.Windows.Controls.Primitives.Selector から派生したコントロールを適応させます。
  3. ItemsControlRegionAdapter. このアダプターは、System.Windows.Controls.ItemsControl 型のコントロールと派生クラスを適応させます。

これが意味することは、任意の ContentControl (1 つのコンテンツ要素を表示するコントロール)、複数のコンテンツ要素を表示し、選択された項目の概念を持つセレクター、および複数を表示する単なるコントロールである ItemsControl の上でリージョンを使用できることです。オブジェクト。

問題の解決策は、すべてのビューを表示するように自動的にサイズを変更する ItemsControl を使用することだと思います。

于 2009-03-10T14:20:53.723 に答える
0

私自身の質問に答えさせてください:

上記の RegionManager コードは正常に動作します。

ビューの UserControl 要素から高さのプロパティを削除する必要があります。そうしないと、互いに重なり合ってしまいます。

于 2009-03-10T14:10:55.320 に答える