如何增强 TabControl 以停靠和浮动 TabItems 或文档?

Dav*_*mer 5 wpf tabcontrol dock mvvm avalondock

我有一个TabControl允许用户管理以下文档的文件:

在此处输入图片说明

在某些时候,我想添加一个功能,允许用户浮动TabItems 并将它们停靠回与TabControl您在 Visual Studio 中可以做的事情差不多的地方。此功能将允许用户更轻松地比较文档并在它们之间复制/粘贴等。

我有一些关于如何去做这件事的一般想法。该TabControl有其ItemsSource必然的文档视图模型的列表。

要浮动选项卡:

  1. Thumb控件添加到TabItem.
  2. 当用户拖动 时Thumb,关联的文档视图模型将从TabControl列表中删除。
  3. 一个单独的文档Window被打开,与文档视图模型绑定,以显示/编辑该文档。

要停靠选项卡:

  1. 在 中添加DragOver事件处理程序TabControl以识别Window拖过选项卡条区域的文档。
  2. 关联的文档视图模型被添加到TabControl列表中。
  3. 文档Window已关闭。

有没有关于如何做到这一点的例子,或者你有办法做到这一点?

谢谢。

Rac*_*hel 2

如果您找不到或不想使用预先存在的控件,我强烈推荐 Bea Stollnitz 的关于在数据绑定控件之间拖放的文章。您可能需要对它进行一些更改才能使用 aDockPanel来确定DockPanel.Dock数据绑定对象应该使用什么,但是我发现过去的代码很容易更改。

然后,您将设置两个数据绑定控件,例如 aTabControl和 a DockPanel,当在两者之间拖/放时,您实际上是在ItemsSources.