如何设置Avalon对接管理器像VS一样调整大小?

Pie*_*ter 4 wpf avalondock

我在我的WPF应用程序中使用Avalon.我想要一个类似于Visual Studio的窗口,左边是Tools,然后是中间的文档和右边的Properties.我设法用这段代码做到了:

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:ad="clr-namespace:AvalonDock;assembly=AvalonDock"
        xmlns:local="clr-namespace:WpfApplication1"
    Title="Window1" Height="600" Width="800">
    <Grid>
        <ad:DockingManager x:Name="dockManager" RenderTransformOrigin="0,0">
            <ad:ResizingPanel Orientation="Vertical">
                <ad:ResizingPanel Orientation="Horizontal" >
                    <ad:DockablePane>
                        <ad:DockableContent Title="Toolbox" Width="100">
                            <TextBox />
                        </ad:DockableContent>
                    </ad:DockablePane>
                    <ad:DocumentPane x:Name="documentsHost" OverridesDefaultStyle="True">
                        <ad:DocumentContent Title="File1.doc">
                            <RichTextBox/>
                        </ad:DocumentContent >
                        <ad:DocumentContent Title="File2.doc">
                            <RichTextBox/>
                        </ad:DocumentContent >
                    </ad:DocumentPane>
                    <ad:DockablePane>
                        <ad:DockableContent Title="Project Explorer">
                            <TextBox />
                        </ad:DockableContent>
                    </ad:DockablePane>
                </ad:ResizingPanel>
                <ad:DockablePane>
                    <ad:DockableContent Title="Output">
                        <TextBox />
                    </ad:DockableContent>
                </ad:DockablePane>
            </ad:ResizingPanel>
        </ad:DockingManager>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

问题是,当我调整其中任何一个时,它们都会调整大小以保持其比例.这不是我想要的,我希望它像VS一样,只是中间的文档窗口调整大小.

我会感激任何帮助,因为我已经与这个斗争了几天了:(

Tim*_*res 7

很有趣,因为我从那里开始使用Avalon Tutorial 并用你的XAML替换了窗口的内容(顺便说一下非常相似).你描述的问题不会发生.

然后我意识到本教程使用AvalonDock 1.1.1692,而最新版本是1.1.2691并且具有您描述的行为.

查看源代码,显示ResizingPanel定义的附加属性,名为ResizeWidth,默认为1*=自动调整大小.

如果您更改第一个DockablePane,如下所示:

<ad:DockablePane ad:ResizingPanel.ResizeWidth="100" >
Run Code Online (Sandbox Code Playgroud)

你得到了你想要的行为.

使用硬编码宽度永远不会很好,所以我把它改成了

<ad:DockablePane ad:ResizingPanel.ResizeWidth="{Binding ElementName=dc, Path=Width}" >
Run Code Online (Sandbox Code Playgroud)

在命名内部DockableContent dc之后