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

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 【安全系列】IPSEC ××× 配置实例

    【安全系列】IPSEC ××× 配置实例

  • Java sessionID 一直变化的解决方案「建议收藏」

    Java sessionID 一直变化的解决方案「建议收藏」最近在开发一个项目,测试的人员给我说IOS的登录不上去,由于我和他不是一起的,不能面对面的调试,我就自己找问题喽。没成想正让我找到了。问题一:使用IE浏览器访问的时候sessionID一直变化,其他的浏览器没问题。找了半天原因,发现IE登录的时候路径一样的会自动缓存数据,压根就不进你的后台,直接就是没登录,sessionID一直变化也是正常的,这个问题在参数后面加个时间戳就解决了。…

  • MapReduce编程初级实践_mapreduce的执行流程

    MapReduce编程初级实践_mapreduce的执行流程编程实现文件合并和去重操作对于两个输入文件,即文件A和文件B,请编写MapReduce程序,对两个文件进行合并,并剔除其中重复的内容,得到一个新的输出文件C。下面是输入文件和输出文件的一个样例供参考。输入文件A的样例如下:20150101x20150102y20150103x20150104y…

    2022年10月31日
  • odoo环境搭建_apache web服务器

    odoo环境搭建_apache web服务器1.新建用户1.1新建只能在控制台下登录的用户1)切换为root用户为了获取创建用户的权限peng@ubuntu:~$sudosu2)添加一个新用户(如用户名为csdn)root@ubuntu:/home/peng#useraddcsdn3)为该用户设定登录密码root@ubuntu:/home/peng#passwdcsdn4)为该用户指定命令解释程序(通常为/bin/b…

    2022年10月24日
  • Cinemachine(一)VirtualCamera和Brain的简单介绍「建议收藏」

    Cinemachine(一)VirtualCamera和Brain的简单介绍「建议收藏」https://zhuanlan.zhihu.com/p/103584975简介Cinemachine是Unity在2017版本推出的一套处理Camera的组件。利用Cinemachine我们可以不通过敲代码就实现很多摄像机功能,例如目标跟随,镜头切换等等。官方文档:https://docs.unity3d.com/Packages/com.unity.cinemachine@2.6/manual/index.html我们可以通过PackageManager来安装C…

  • 查找函数 lower_bound()及其应用 uva10474

    查找函数 lower_bound()及其应用 uva10474

发表回复

您的电子邮箱地址不会被公开。

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