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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python中的set(),zip()以及map()函数

    python中的set(),zip()以及map()函数set、zip和map函数均为python的内置函数。(1)set()用法:set(interable)用来创建一个无序不重复元素的集合。可以对其进行集合的一系列操作,例如求差集、并集和补集,利

    2022年7月5日
    17
  • java populate_BeanUtils 以及BeanUtils.populate使用[通俗易懂]

    java populate_BeanUtils 以及BeanUtils.populate使用[通俗易懂]ApacheJakartaCommons项目非常有用。我曾在许多不同的项目上或直接或间接地使用各种流行的commons组件。其中的一个强大的组件就是BeanUtils。我将说明如何使用BeanUtils将local实体bean转换为对应的value对象:BeanUtils.copyProperties(aValue,aLocal)上面的代码从aLocal对象复制属性到aValue对象。它相…

    2022年7月14日
    34
  • goland2021激活码【注册码】

    goland2021激活码【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    59
  • 【Spring Cloud】教你十分钟学会Gateway~

    【Spring Cloud】教你十分钟学会Gateway~SpringCloudGateway是SpringCloud的一个全新项目,该项目是基于Spring5.0,SpringBoot2.0和ProjectReactor(响应式编程)等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的API路由管理方式。………

    2025年6月26日
    0
  • Python 列表元素字符串转浮点

    Python 列表元素字符串转浮点在网络爬虫或者读取文件中的数据时,很多时候读取出来的数值是字符串形式的,这些字符串形式的数据并不能用来作计算或者更深入的操作,因此我们需要把他们转换为数值的形式。简单粗暴的for循环假设,这里有一个以字符串形式存储数值的列表,具体如下:a=[‘2′,’3.5′,’10’,’88’,’32.66′]我们需要将其转换为浮点的形式,最简单粗暴直接的方法,可以使用…

    2022年6月1日
    44
  • 八数码问题求解「建议收藏」

    八数码问题求解「建议收藏」(一)问题描述在一个3*3的方棋盘上放置着1,2,3,4,5,6,7,8八个数码,每个数码占一格,且有一个空格。这些数码可以在棋盘上移动,其移动规则是:与空格相邻的数码方格可以移入空格。现在的问题是:对于指定的初始棋局和目标棋局,给出数码的移动序列。该问题称八数码难题或者重排九宫问题。(二)问题分析八数码问题是个典型的状态图搜索问题。搜索方式有两种基本的方式,即树式搜索和线式搜索。搜索策略大体有盲…

    2022年7月26日
    3

发表回复

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

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