リージョンがアタッチされたタブコントロールがあり、タブコントロール内に別のリージョンのコンテンツコントロールもあります。
私が抱えている問題は、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);
}
}
}
ご覧のとおり、少しぎこちなく、うまく機能しません。私が間違っていることについて何か考えはありますか?
助けてくれてありがとう!