Wpf下dragablz使用Prism8進行導航-3


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM