Wpf下dragablz使用Prism8进行导航-3

AIStudio框架汇总及介绍

前言-续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

posted @ 2021-08-09 10:41  竹天笑  阅读(1221)  评论(0编辑  收藏  举报