我在我的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>
问题在于,当我调整其中任何一个时,它们都会调整大小以保持其比例。这不是我想要的,我希望它像VS一样,只是中间的文档窗口调整大小。
我很感激任何帮助,因为我现在已经和它斗争了几天:(
答案 0 :(得分:6)
很有趣,因为我从there开始使用Avalon Tutorial并用你的XAML替换了窗口的内容(顺便说一句,非常相似)。你描述的问题不会发生。
然后我意识到本教程使用AvalonDock 1.1.1692,而最新版本是1.1.2691,并且有你描述的行为。
查看源代码,显示ResizingPanel定义的附加属性,名为ResizeWidth,默认为1 * =&gt;自动调整大小。
如果您更改第一个DockablePane:
<ad:DockablePane ad:ResizingPanel.ResizeWidth="100" >
你得到了你想要的行为。
使用硬编码宽度永远不会很好,所以我将其更改为
<ad:DockablePane ad:ResizingPanel.ResizeWidth="{Binding ElementName=dc, Path=Width}" >
在命名内部DockableContent dc 之后