0

リージョンがアタッチされたタブコントロールがあり、タブコントロール内に別のリージョンのコンテンツコントロールもあります。

私が抱えている問題は、RegisterViewWithRegionを呼び出すと、ビューがリージョンに問題なく追加されることです(つまり、タブを入れ替えると問題が発生します)。しかし、これはあまり柔軟ではなく、私はそれを行うためのより良い方法を探しています。

IRegionManager.Regionsの内部も見ると、トップレベルの2つのリージョンしか表示されません。サブリージョンTabContentRegionが表示されません。これを登録して、ビューを追加してアクティブ化する通常の方法で作業できるようにする方法はありますか?

   <TabControl TabStripPlacement="Left"
            Width="Auto"
            Height="Auto"
            cal:RegionManager.RegionName="TabRegion"
            Name="TabRegion"
            SelectedItem="{Binding SelectedTab}">
    <TabControl.ContentTemplate>
        <DataTemplate>

            <ContentControls:TransitionContentControl 
                cal:RegionManager.RegionName="TabContentRegion" />

        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl>

このコードは、TabRegionにビューを追加します

 public void Load()
 {
     IConfigurationDetailsPresentationModel convDetailsView1 =
         this.Container.Resolve<IConfigurationDetailsPresentationModel>();

     IRegionManager manager = this.Container.Resolve<IRegionManager>();
     manager.RegisterViewWithRegion("TabRegion", () => convDetailsView1);

     IConversationDetailsPresentationModel conversationDetails = 
         this.Container.Resolve<IConversationDetailsPresentationModel>();
     manager.RegisterViewWithRegion("TabRegion", () => conversationDetails);
 }

次に、これは、TabContentRegionにビューを実際に表示するために使用しているコードです。

 public IPresentationModel SelectedTab
 {
     get { return _selectedTab; }
     set
     {
         _selectedTab = value;

         IRegionManager service = this.Container.Resolve<IRegionManager>();

         if (service != null)
         {
             service.RegisterViewWithRegion(
                 "TabContentRegion",
                 () => _selectedTab.View);
         }
     }
 }

ご覧のとおり、少しぎこちなく、うまく機能しません。私が間違っていることについて何か考えはありますか?

助けてくれてありがとう!

4

1 に答える 1

0

たくさん遊んだりグーグルしたりした後、ついに出くわして答えました!

リージョンはデータテンプレート内にあるため、プリズムの標準的な動作では、リージョンがそれを取得してリージョンマネージャーに登録することはありません。

ここで提供されているコードを使用すると、これを修正して通常どおり続行するのに役立ちました。:)

乾杯。ste。

于 2012-04-23T07:55:50.593 に答える