私は WPF PRISM を使用しており、 をTabItem
使用してナビゲートできるように追加する優雅なアプローチを探していRequestNavigate
ます。
これは、次のコードを使用して既に達成していますが、実際のビューではありません。実際、これらはタイトルを表示するのに役立っているだけですView1
。View2
regionManager.RegisterViewWithRegion("TabRegion", typeof(View1));
regionManager.RegisterViewWithRegion("TabRegion", typeof(View2));
実際の問題は、実際のビューをレンダリングするためにそこにある DataTemplate 内の領域も定義したことです。最初は、DataTemplate 内で定義されたリージョンについて RegionManager に知らせるという問題に直面していましたが、この素晴らしい投稿の助けを借りて、この問題を解決しました。
XAML でのタブ定義:
<TabControl prism:RegionManager.RegionName="TabRegion">
<TabControl.ContentTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="2" />
<ColumnDefinition Width="3*" />
</Grid.ColumnDefinitions>
<ContentControl Grid.Column="0" prism:RegionManager.RegionName="TabNavigationRegion" prism:RegionManager.RegionManager="{Binding Path=DataContext.RegionManager, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" />
<GridSplitter Grid.Column="1" HorizontalAlignment="Stretch" />
<ContentControl Grid.Column="2" prism:RegionManager.RegionName="TabContentRegion" prism:RegionManager.RegionManager="{Binding Path=DataContext.RegionManager, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" />
</Grid>
</DataTemplate>
</TabControl.ContentTemplate>
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}">
<Setter Property="Header" Value="{Binding RelativeSource={RelativeSource Self}, Path=Content.DataContext.TabModel.Title}" />
</Style>
</TabControl.ItemContainerStyle>
</TabControl>
この問題に対する最善の解決策または他の効率的な方法を教えてください。