导航

从零开始学习AvalonDock(1)

Posted on 2012-04-11 00:07  skystalker  阅读(3490)  评论(1编辑  收藏  举报
由于个人需要,时不时得开发上位机程序,之前用过WIN API和C# WIN FORM,但都是开发一两个程序就不用了。这次又需要弄一个上位机,为了不花大量精力来弄界面,经过两天业余时间的搜索资料,决定选用WPF。
这个程序需要有类似VS2008和KEIL等软件的DOCKING PANEL功能,选用了开源的控件AVALONDOCK。
 
本人非专职上位机开发人员,只求用最快的速度达到需求,只把WPF的概念大约了解了一下,不打算单独研究XAML的语法。先建立一个DEMO感受一下,获得一些成就感是明智的。
 
新建一个空的工程,在references中添加avalondock的DLL,然后把XMAL文件按如下修改
View Code
<Window x:Class="WpfApplication4.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:avalonDock="clr-namespace:AvalonDock;assembly=AvalonDock"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="24"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="24"/>
        </Grid.RowDefinitions>
        <Menu>
            <MenuItem Header="File">
                <MenuItem Header="Exit"/>
            </MenuItem>
        </Menu>

        <avalonDock:DockingManager Grid.Row="1" x:Name="dockManager" >

            <StatusBar Grid.Row="2">
            <StatusBarItem Content="AvalonDock 1.3 Sample Project"/>
        </StatusBar>
        </avalonDock:DockingManager>
    </Grid>
        
</Window>
然后增加
View Code
<avalonDock:ResizingPanel Orientation="Horizontal">
                <avalonDock:DockablePane>
                    <avalonDock:DockableContent x:Name="classesContent" Title="Classes"/>
                </avalonDock:DockablePane>
                <avalonDock:DocumentPane>
                    <avalonDock:DocumentContent Title="MyDocument!"/>
                </avalonDock:DocumentPane>
            </avalonDock:ResizingPanel>

 

也可以不要上面那部分代码,后台代码修改成如下,职业习惯,我更喜欢在后台生成窗口。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using AvalonDock;

namespace WpfApplication4
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            var resPanel = new ResizingPanel() { Orientation = Orientation.Horizontal };
            var dockPane = new DockablePane() { };
            var documentPane = new DocumentPane() { };

            dockPane.Items.Add(new DockableContent()
            {
                Name = "classesContent",
                Title = "Classes"
            });

            documentPane.Items.Add(new DocumentContent()
            {
                Title = "My Document!"
            });

            resPanel.Children.Add(dockPane);
            resPanel.Children.Add(documentPane);
            dockManager.Content = resPanel;
        }
    }
}

运行一下就会出来一个具有浮动和自动停靠等功能的DEMO程序。

 

以上程序来源:http://avalondock.codeplex.com/wikipage?title=GettingStarted&referringTitle=Documentation