gpt4 book ai didi

c# - 在 Avalondock 中禁用放置目标(布局)

转载 作者:太空狗 更新时间:2023-10-29 23:46:02 25 4
gpt4 key购买 nike

我正在使用开源库 AvalonDock 来支持将多个选项卡( Pane )拖放到 MainWindow 外部和返回主窗口,我想禁用大部分可能的放置目标(或者说布局),比如在下面放置一个选项卡另一个或并排放置标签。换句话说,我只想允许将选项卡放置在“选项卡行”中,就像在 firefox 或 chrome 浏览器中一样。

是否有任何属性可以禁用放置目标(布局)?如果有,您能否提供一个简短的代码示例?

这是一个带有三个可停靠 Pane (LayoutDocuments) 的主窗口的简单示例,它看起来像 WPF 的标准 TabControl 的 TabItems(抱歉,我无法发布此屏幕截图):

<Window x:Class="TabTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:xcad="http://schemas.xceed.com/wpf/xaml/avalondock"
Height="300" Width="300">
<Grid>
<xcad:DockingManager VerticalAlignment="Stretch">
<xcad:LayoutRoot>
<xcad:LayoutPanel>
<xcad:LayoutDocumentPane>
<xcad:LayoutDocument Title="Doc1">
</xcad:LayoutDocument>
<xcad:LayoutDocument Title="Doc2">
</xcad:LayoutDocument>
<xcad:LayoutDocument Title="Doc3">
</xcad:LayoutDocument>
</xcad:LayoutDocumentPane>
</xcad:LayoutPanel>
</xcad:LayoutRoot>
</xcad:DockingManager>
</Grid>
</Window>

感谢您的帮助!

最佳答案

此答案是为 AvalonDock 2.0 编写的。我不知道这是否适用于其他版本的 AvalonDock。

在源代码中,有一个文件Controls/OverlayWindow.cs。更改 case DropAreaType.DocumentPane: default: 内的 else 内的代码,以无论如何隐藏所需的目标:

void IOverlayWindow.DragEnter(IDropArea area)
{
...
switch (area.Type)
{
...
case DropAreaType.DocumentPane:
default:
{
...
else
{
areaElement = _gridDocumentPaneDropTargets;

_documentPaneDropTargetLeft.Visibility = Visibility.Hidden;
_documentPaneDropTargetRight.Visibility = Visibility.Hidden;
_documentPaneDropTargetTop.Visibility = Visibility.Hidden;
_documentPaneDropTargetBottom.Visibility = Visibility.Hidden;

/* ... */
}
}
break;
}
...
}

省略号是摘要代码段。

关于c# - 在 Avalondock 中禁用放置目标(布局),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20422972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com