C# 更改选项卡项时不关闭浮动窗口

C# 更改选项卡项时不关闭浮动窗口,c#,.net,wpf,tabcontrol,avalondock,C#,.net,Wpf,Tabcontrol,Avalondock,目前,我开发了一个WPF应用程序,其中包含一个TabControl,以允许访问每个插件 每个插件都使用AvalonDock,并且有不同的窗口,可以停靠、浮动或隐藏 当我在plugin1中浮动窗口并在plugin2中切换plugin2后,浮动窗口消失(这是正常的),但我希望plugin1的浮动窗口不会在我切换plugin2时消失(如下图所示) 步骤1: 步骤2: 步骤3: 浮动窗口消失的当前代码 <TabControl> <TabItem&g

目前,我开发了一个WPF应用程序,其中包含一个TabControl,以允许访问每个插件

每个插件都使用AvalonDock,并且有不同的窗口,可以停靠、浮动或隐藏

当我在plugin1中浮动窗口并在plugin2中切换plugin2后,浮动窗口消失(这是正常的),但我希望plugin1的浮动窗口不会在我切换plugin2时消失(如下图所示)

步骤1:

步骤2:

步骤3:

浮动窗口消失的当前代码

        <TabControl>
        <TabItem>
            <TabItem.Header>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="Blue" Foreground="Blue" />
                </StackPanel>
            </TabItem.Header>
            <xcad:DockingManager x:Name="DockingManager">
                <xcad:LayoutRoot>
                    <xcad:LayoutPanel Orientation="Horizontal">
                        <xcad:LayoutDocumentPaneGroup Orientation="Vertical" x:Name="ScriptGroup">
                            <xcad:LayoutDocumentPane x:Name="ScriptPanel" PaneName="ScriptPanel">
                                <xcad:LayoutDocument Title="1-1" >
                                    <TextBlock Text="1-1" Foreground="Blue"  />
                                </xcad:LayoutDocument>
                                <xcad:LayoutDocument Title="1-2">
                                    <TextBlock Text="1-2" Foreground="Blue" />
                                </xcad:LayoutDocument>
                                <xcad:LayoutDocument Title="1-3">
                                    <TextBlock Text="1-2" Foreground="Blue" />
                                </xcad:LayoutDocument>
                                <xcad:LayoutDocument Title="1-4">
                                    <TextBlock Text="1-2" Foreground="Blue" />
                                </xcad:LayoutDocument>
                            </xcad:LayoutDocumentPane>
                        </xcad:LayoutDocumentPaneGroup>
                    </xcad:LayoutPanel>
                </xcad:LayoutRoot>
            </xcad:DockingManager>
        </TabItem>
        <TabItem>
            <TabItem.Header>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="Red" Foreground="Red" />
                </StackPanel>
            </TabItem.Header>
            <xcad:DockingManager x:Name="DockingManager2">
                <xcad:LayoutRoot>
                    <xcad:LayoutPanel Orientation="Horizontal">
                        <xcad:LayoutDocumentPaneGroup Orientation="Vertical" x:Name="ScriptGroup2qdrgqr">
                            <xcad:LayoutDocumentPane x:Name="ScriptPanel2qrgtqr" PaneName="ScriptPanel">
                                <xcad:LayoutDocument Title="1-1">
                                    <TextBlock Text="1-1"  Foreground="Red" />
                                </xcad:LayoutDocument>
                                <xcad:LayoutDocument Title="1-2">
                                    <TextBlock Text="1-2" Foreground="Red"/>
                                </xcad:LayoutDocument>
                                <xcad:LayoutDocument Title="1-3">
                                    <TextBlock Text="1-2" Foreground="Red"/>
                                </xcad:LayoutDocument>
                                <xcad:LayoutDocument Title="1-4">
                                    <TextBlock Text="1-2" Foreground="Red"/>
                                </xcad:LayoutDocument>
                            </xcad:LayoutDocumentPane>
                        </xcad:LayoutDocumentPaneGroup>
                    </xcad:LayoutPanel>
                </xcad:LayoutRoot>
            </xcad:DockingManager>
        </TabItem>
        <TabItem>
            <TabItem.Header>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="Green" Foreground="Green" />
                </StackPanel>
            </TabItem.Header>
            <xcad:DockingManager x:Name="DockingManager3">
                <xcad:LayoutRoot>
                    <xcad:LayoutPanel Orientation="Horizontal">

                        <xcad:LayoutDocumentPaneGroup Orientation="Vertical" x:Name="ScriptGroup3">
                            <xcad:LayoutDocumentPane x:Name="ScriptPanel3" PaneName="ScriptPanel">
                                <xcad:LayoutDocument Title="1-1">
                                    <TextBlock Text="1-1" Foreground="Green" />
                                </xcad:LayoutDocument>
                                <xcad:LayoutDocument Title="1-2">
                                    <TextBlock Text="1-2" Foreground="Green"/>
                                </xcad:LayoutDocument>
                                <xcad:LayoutDocument Title="1-3">
                                    <TextBlock Text="1-2" Foreground="Green"/>
                                </xcad:LayoutDocument>
                                <xcad:LayoutDocument Title="1-4">
                                    <TextBlock Text="1-2" Foreground="Green"/>
                                </xcad:LayoutDocument>
                            </xcad:LayoutDocumentPane>
                        </xcad:LayoutDocumentPaneGroup>
                    </xcad:LayoutPanel>
                </xcad:LayoutRoot>
            </xcad:DockingManager>
        </TabItem>
    </TabControl>

目前的机制能否做到这一点?(带Tabcontrol和Avalondock)


如果答案是否定的,你能告诉我做这件事的最佳方法是什么吗?

我认为使用TabControl是行不通的。只有当前选定的选项卡项内容才会加载到控件内容区域。如果希望弹出窗口持续更长时间,您可能应该在树上的某个位置管理弹出窗口,或者实际创建工具箱窗口而不是弹出窗口。为什么在avalon dock提供了所有这些功能的情况下使用选项卡控件?如果每个插件都创建了一个viewmodel,那么绑定到文档集合,就完成了