相关疑难解决方法(0)

在WPF中实现multidock窗口系统(如blend,visual studio)

您将如何实现如Expression Blend中所示的对接工具箱窗口系统,您可以通过多种方式将工具箱窗口对接在一起,重叠为标签或浮动顶层窗口.我的系统应该与Expression Blend中的行为非常相似.此外,我得到视觉提示的方式,拖动时工具箱窗口将停靠,这正是我需要的.

只有一个例外:在混合时,当拖动到已经顶层(撕下)的工具箱窗口时,我只能将其作为填充整个窗口的选项卡停靠.但是我需要一个工具箱窗口和主窗口之间没有区别的系统.我需要能够将窗口停靠在工具箱窗口中,就像在主窗口中一样.

另请注意,由于内部策略,我无法使用任何开源或第三方库.

我会对你如何为这样的东西设置一般类设计感兴趣?我希望保持尽可能通用,以便它可以用于许多不同的场景.

停靠行为如下图所示.中心图像显示了感应拖曳对接区域.窗口会突然出现的外部图像:

alt text http://img196.imageshack.us/img196/2450/dockingregions.png

一般来说,我在这里遇到市长问题:我如何设计编程模型(如何在XAML中持久化对接配置)以及如何实际实现底层功能.我的第一个想法是,我想成为DockPanel和TabControl的共生.有点像这样:

<DockTabControl>
  <DockTabItem Dock="FirstLeft">
    <DockTabItem.Header>
        <TextBlock>Tab 1</TextBlock>
    </DockTabItem.Header>
    <!-- Tab 1 content -->
  </DockTabItem>
  <DockTabItem Header="Tab 2" Dock="SecondLeft" DockMode="MergeWithPreviousToTabgroup">
    <!-- Tab 2 content -->
  </DockTabItem>
  <DockTabItem Header="Tab 3" Dock="FirstMiddle">
    <!-- Tab 3 content -->
  </DockTabItem>
</DockTabControl>
Run Code Online (Sandbox Code Playgroud)

当然这还没有意义.无法以这种方式定义停靠,并且此处尚未解决窗口问题.但我喜欢仅通过在DockTabItem上定义一些属性来定义对接和tabgroups的想法.我真的不想引入像TabGroups或类似的额外控件.我只是通过定义子节点和Dock附加属性的顺序来了解DockPanel中的对接行为.当然,我的对接会更复杂,行为更像网格.

windows wpf docking

10
推荐指数
1
解决办法
3万
查看次数

标签 统计

docking ×1

windows ×1

wpf ×1