前言-續Wpf下AvalonDock使用Prism8進行導航2
1.通常TabablzControl的是通過ItemSource進行TabItem選項卡控制的,一般也是這樣搞的。
無意中用TabablzControl替換了TabControl,發現_regionManager.RequestNavigate失效了。
2.一般思路都是百度一下解決方案,很高興的是,DragablzPrism開源代碼實現了,遺憾的是用的老prism,那就升級上來吧,不好使。
3.那就只好自己按照Wpf下AvalonDock使用Prism8進行導航2的方法,講Avalon替換成Dragablz,再參照下2中的方法。
4.實現了TabablzControlBehavior,TabablzControlRegion,TabablzControlRegionAdapter代碼就不貼,大家下載源碼看吧。
5.使用方法:
protected override void ConfigureRegionAdapterMappings(RegionAdapterMappings regionAdapterMappings) { base.ConfigureRegionAdapterMappings(regionAdapterMappings); regionAdapterMappings.RegisterMapping(typeof(TabablzControl), Container.Resolve<TabablzControlRegionAdapter>()); }
<dragablz:TabablzControl prism:RegionManager.RegionName="ContentRegion3" Margin="5" ShowDefaultCloseButton="True" ClosingItemCallback="{Binding ClosingTabItemHandler}" ItemContainerStyle="{StaticResource TrapezoidDragableTabItemStyle}" > <dragablz:TabablzControl.HeaderItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding DataContext.Title}"/> </StackPanel> </DataTemplate> </dragablz:TabablzControl.HeaderItemTemplate> <dragablz:TabablzControl.ContentTemplate> <DataTemplate DataType="{x:Type preview:TabablzProxy}"> <ContentPresenter Margin="4" Content="{Binding View}" /> </DataTemplate> </dragablz:TabablzControl.ContentTemplate> </dragablz:TabablzControl>
6.上圖:
7.老規矩,上源碼地址:https://gitee.com/akwkevin/AIStudio.Wpf.AvalonDockPrism