WPF 第三方控件学习使用——可停靠布局控件(AvalonDock)

WPF 第三方控件学习使用——可停靠布局控件(AvalonDock)需求近期在做公司上位机产品规划与实验,参考了Blender软件的布局风格,希望能用WPF也做一个类似布局的上位机。于是开始寻找资源,很快就发现了AvalonDock。AvalonDock简介AvalonDock是Xceed公司Wpf.Toolkit中的一款收费产品,其中还包括很多其他控件的收集整理,感兴趣的自行研究。但是万能的Nuget里面有许多免费的版本,并且GitHub…

大家好,又见面了,我是你们的朋友全栈君。

需求

近期在做公司上位机产品规划与实验,参考了Blender软件的布局风格,希望能用WPF也做一个类似布局的上位机。于是开始寻找资源,很快就发现了AvalonDock。

AvalonDock简介

AvalonDock是Xceed公司 Wpf.Toolkit 中的一款收费产品,其中还包括很多其他控件的收集整理,感兴趣的自行研究。

WPF 第三方控件学习使用——可停靠布局控件(AvalonDock)

但是万能的Nuget里面有许多免费的版本,并且GitHub开源。下面就给列举一个自己使用的Dirkster.AvalonDock。

 

使用

1.创建我们自己的WPF项目

WPF 第三方控件学习使用——可停靠布局控件(AvalonDock)

2.使用NuGet引入Dirkster.AvalonDock资源库

步骤:右键项目(Melphi)–>管理NuGet程序包–>浏览–>输入”Dirkster.AvalonDock”–>选择”Dirkster.AvalonDock”点击安装即可

WPF 第三方控件学习使用——可停靠布局控件(AvalonDock)

3.使用

这里只是为了演示效果,我就直接把代码贴出来了,不做解释。控件如何使用,请查看其源码:https://github.com/Dirkster99/AvalonDock或者其他博主。

<Window x:Class="Melphi.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Melphi"
        xmlns:avalon="http://schemas.xceed.com/wpf/xaml/avalondock"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <Menu>
            <MenuItem Header="File">
                <MenuItem Header="New"/>
                <MenuItem Header="Open"/>
            </MenuItem>
            <MenuItem Header="Edit">
                <MenuItem Header="Undo"/>
                <MenuItem Header="Cut"/>
                <MenuItem Header="Copy"/>
            </MenuItem>
            <MenuItem Header="View">
                <MenuItem Header="Explorer"/>
                <MenuItem Header="Open"/>
            </MenuItem>
            <MenuItem Header="Tool">
                <MenuItem Header="Extentions"/>
                <MenuItem Header="Options"/>
            </MenuItem>
            <MenuItem Header="Help">
                <MenuItem Header="Welcome"/>
                <MenuItem Header="Support"/>
                <MenuItem Header="About"/>
            </MenuItem>
        </Menu>

        <avalon:DockingManager Grid.Row="1">
            <avalon:DockingManager.Theme>
                <avalon:GenericTheme></avalon:GenericTheme>
            </avalon:DockingManager.Theme>
            <avalon:LayoutRoot>
                <avalon:LayoutPanel Orientation="Horizontal">
                    <avalon:LayoutAnchorablePaneGroup DockWidth="150" FloatingWidth="240">
                        <avalon:LayoutAnchorablePane x:Name="panelLeft">
                            <avalon:LayoutAnchorable Title="Tool"></avalon:LayoutAnchorable>
                            <avalon:LayoutAnchorable Title="Team"></avalon:LayoutAnchorable>
                        </avalon:LayoutAnchorablePane>
                    </avalon:LayoutAnchorablePaneGroup>
                    <avalon:LayoutPanel Orientation="Vertical">
                        <avalon:LayoutDocumentPaneGroup>
                            <avalon:LayoutDocumentPane x:Name="panelTop">
                                <avalon:LayoutDocument Title="MainWindow.xaml"></avalon:LayoutDocument>
                                <avalon:LayoutDocument Title="MainWindow.xaml.cs"></avalon:LayoutDocument>
                            </avalon:LayoutDocumentPane>
                        </avalon:LayoutDocumentPaneGroup>
                        <avalon:LayoutAnchorablePaneGroup DockMinHeight="30" DockHeight="100" FloatingHeight="180">
                            <avalon:LayoutAnchorablePane x:Name="panelBottom">
                                <avalon:LayoutAnchorable Title="Output"></avalon:LayoutAnchorable>
                                <avalon:LayoutAnchorable Title="Exception"></avalon:LayoutAnchorable>
                                <avalon:LayoutAnchorable Title="Error"></avalon:LayoutAnchorable>
                            </avalon:LayoutAnchorablePane>
                        </avalon:LayoutAnchorablePaneGroup>
                    </avalon:LayoutPanel>
                    <avalon:LayoutAnchorablePaneGroup DockMinWidth="50" DockWidth="150" FloatingWidth="270">
                        <avalon:LayoutAnchorablePane x:Name="panelRight" DockWidth="240" FloatingWidth="240">
                            <avalon:LayoutAnchorable Title="Solution"></avalon:LayoutAnchorable>
                            <avalon:LayoutAnchorable Title="Property"></avalon:LayoutAnchorable>
                        </avalon:LayoutAnchorablePane>
                    </avalon:LayoutAnchorablePaneGroup>
                </avalon:LayoutPanel>
            </avalon:LayoutRoot>
        </avalon:DockingManager>

        <Border Grid.Row="2" Background="AliceBlue" Height="20">

        </Border>
    </Grid>
</Window>

 

 

4.效果

WPF 第三方控件学习使用——可停靠布局控件(AvalonDock)

WPF 第三方控件学习使用——可停靠布局控件(AvalonDock)

 

总结

学会查找资料,那将是你尽快抵达下一站的不二捷径。

 

Over

每次记录一小步…点点滴滴人生路…

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162153.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 解读Raft(一 算法基础)

    解读Raft(一 算法基础)

    2021年5月26日
    118
  • 关于读书的名言名句_contentdescription

    关于读书的名言名句_contentdescription没有永恒的技术只有变态的需求,没有好说的客户只有无奈的开发者,如果iframe的出现是一个错误的话,iframe里边在来一个iframe那是错上加错,神话没有在远古的尘嚣中消失,却在怀具的今天不断上演。生活永远是一个大染缸,一块白布下去,黑布出来,一块黑布下去,一块七色布出来。contentWindow兼容各个浏览器,可取得子窗口的window对象。contentDocume…

    2022年8月30日
    5
  • matlab语法 axis on,matlabaxis

    matlab语法 axis on,matlabaxis编程语言中文网今天精心准备的是《matlabaxis》,下面是详解!Matlab里axis这个函数怎么用,举个例子!axis函数可以用于操作普通的坐标属性(轴的缩放和外观)。比如:axis([xminxmaxyminymax]):可以设置当前坐标轴x轴和y轴的限制范围axis([xminxmaxyminymaxzminzmaxcmincmax])可以设置x,y…

    2022年6月13日
    24
  • VisualSVN Server的配置和使用方法

    VisualSVN Server的配置和使用方法

    2021年9月19日
    80
  • 使用SpringBoot连接MySQL数据库,快速上手「建议收藏」

    使用SpringBoot连接MySQL数据库,快速上手「建议收藏」使用SpringBoot连接MySQL数据库,快速上手

    2022年6月25日
    55
  • 玻尔兹曼公式推导碰撞项_玻尔兹曼方程表达式

    玻尔兹曼公式推导碰撞项_玻尔兹曼方程表达式在做别的事之前,让我们试做一个假想的研究。假定我们有一个很好的能跟踪单个运动粒子而不产生任何其他效应的激光探测器,把这个探测器应用在一个波尔兹曼气体上,可以很容易发现,无论粒子间碰撞能否忽略,牛顿轨道方程始终是有意义的(如果需要考虑碰撞,沿牛顿轨道的粒子存活几率是应该引进的)。问题就这样产生了:因为波尔兹曼方程和给定的初值边值条件已经构成了一个完全集合,我们是否应该简单的无视牛顿方程?如果牛顿方程…

    2022年8月11日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号