方式:使用AvalonDock.dll控件。
AvalonDock有如下主要元素:
1.DockingManager: DockingManager是AvalonDock中最核心的控件标签,容纳所有AvalonDock标签。
2.ResizingPanel: 用于整体界面布局,方向有横向和纵向。
3.DocumentPane:通常用于包含文字编辑的标签,也可以包含DockableContents标签,DocumentPane不能被拖动
4.DocumentContent:包含在DocumentPane里面,一般用于文本编辑的功能,类似vs2010的代码编辑框部分。
4.DockablePane:能够类似vs2010的工具箱面板,能够吸附在边框上的效果。
5.DockableContent:包含在DockablePane里面,下方显示DockableContent的Title
下面来实现一个类似vs2010的界面,先贴上效果图:

<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="24"/>
<RowDefinition Height="*"/>
<RowDefinition Height="24"/>
</Grid.RowDefinitions>
<Menu>
<MenuItem Header="File">
<MenuItem Header="New Document" Click="NewDocument_Click" Name="NewDocument"/>
<MenuItem Header="Exit"/>
</MenuItem>
</Menu>
<my:DockingManager x:Name="dockManager" Grid.Row="1">
<my:ResizingPanel Orientation="Vertical">
<my:ResizingPanel Orientation="Horizontal">
<my:DocumentPane Name="DocumentPane1">
<my:DocumentContent Title="MyDocument1" Name="MyDoc1">
<TextBox Name="tbContents" VerticalScrollBarVisibility="Auto" AcceptsReturn="True" TextWrapping="Wrap"></TextBox>
</my:DocumentContent>
</my:DocumentPane>
<my:DockablePane my:ResizingPanel.ResizeWidth="150">
<my:DockableContent x:Name="classesContent" Title="Classes">
<TreeView>
<TreeViewItem Header="Class1"/>
<TreeViewItem Header="Class2"/>
</TreeView>
</my:DockableContent>
<my:DockableContent x:Name="toolsContent" Title="Tools">
<ListBox>
<ListBoxItem Content="Tool1"></ListBoxItem>
<ListBoxItem Content="Tool2"></ListBoxItem>
<ListBoxItem Content="Tool3"></ListBoxItem>
</ListBox>
</my:DockableContent>
</my:DockablePane>
</my:ResizingPanel>
<my:DockablePane my:ResizingPanel.ResizeHeight="100">
<my:DockableContent Title="Errors" x:Name="errorsContent">
<ListView>
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="Error"/>
<GridViewColumn Header="Page"/>
<GridViewColumn Header="File"/>
<GridViewColumn Header="Row"/>
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
</my:DockableContent>
<my:DockableContent Title="Output" x:Name="output">
<TextBox IsReadOnly="True" AcceptsReturn="True"/>
</my:DockableContent>
</my:DockablePane>
</my:ResizingPanel>
</my:DockingManager>
<StatusBar Grid.Row="2">
<StatusBarItem Content="AvalonDock 1.3 Sample Project"/>
</StatusBar>
</Grid>
本文介绍了如何使用AvalonDock.dll控件构建一个类似Visual Studio的WPF框架界面,包括DockingManager、ResizingPanel、DocumentPane、DockablePane和DockableContent等关键元素的用法,以及实现菜单、文档编辑区、工具箱和错误输出等功能。

1942

被折叠的 条评论
为什么被折叠?



