WPF 简单模仿 VSCode 界面布局

 WPF 简单模仿 VSCode 界面布局

本文经原作者授权以原创方式二次分享,欢迎转载、分享。

WPF 简单模仿 VSCode 界面布局

作者:弈虎-吕女士会翻墙

原文链接:   https://github.com/Chen-Lin-Zhao-Wei/WPFLikeVSCode

  • 分享一篇群友这几天自己写的 WPF 简单模仿 VSCode 界面布局

  • 具体功能也不多,难度也不大,自定义了若干控件实现以上程序:

db6e08147fcb88a2114ebed6f0f70e81.png
  • CusWindow:自定义窗体,WindowChrome方案, 用于添加 HeaderContent 在标题中显示内容。

d879a446f10f7cef0a58fa18d001caae.png
  • FrameTabControl: 窗体中用于显示主内容的TabContrl,内部逻辑只增加下拉选中其他选项卡的下拉按钮就没了。

08f388783c74a1a4066ecc4db87c7fef.png
  • FrameTabItem: FrameTabControl的子项,页面的容器。

cc610767b44f0259bcac1a9b6c1d8c93.png
  • GroupBoxExtend:继承GroupBox并重写样式,增加了AdditionContent属性。

4608c6855bea06707cf2b5b36afbcf1e.png
  • SideTabControl:继承TabControl并重写样式,增加了TabContent.Content的滑入划出,样式已固定死,无法适应TabStripPlacement变化,这里请注意,用于左侧边栏,Content中控件的宽度由ContentLength控制。

b9cc2be90e820d14eb08ddfd98769806.png
  • SideTabItem:继承子TabItem并重写样式,部分参与触发SideTabControl的划入划出。

9d88c91acfb3ec19de4f8f3fd881929c.png
  • SideTabSizeResiger:一个Thumb用于调整SideTabControlContent的呈现宽度。

8bebd6fdd46f7318a5f3361c89419617.png
  • 额外的内容是TreeView样式的调整,见 Styles.TreeViewer.xaml

96aabdf41d6ce7fecee2db86d9d2a8ce.png
  • 还有垂直的Menu的样式调整 见Styles.VerticalMenu.xaml

388f8d9f0b59fa11fbb3b8cce299b95b.png

效果

 鸣谢 - 弈虎-吕女士会翻墙50708aceac4787aae57beec72470d5e6.gif

源码地址[1]

博客园[2]

参考资料

[1]

源码地址: https://github.com/Chen-Lin-Zhao-Wei/WPFLikeVSCode

[2]

博客园: https://home.cnblogs.com/u/wandia/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/281840.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

compare()方法+使用compare方法

compare()方法 compare(lob1,lob2,amount,offset_1,offset_2) 1用于比较2个lob存储的数据,比较的方式是从指定偏移量开始,对指定数量的字符或者字节进行比较。 2如果比较内容相同,返回0,否则返回-1或1. 3如果参数设置有误或不合…

linux 下 mysql默认表_linux环境下mysql默认是区分表名大小写的

在linux环境下,mysql默认表明是区分大小写的,我们可以查看全局变量发现:mysql> show variables like lower%;-------------------------------| Variable_name | Value |-------------------------------| lower_case_file_system | OFF || lower_cas…

两将军问题和TCP三次握手

两将军问题,又被称为两将军悖论、两军问题, 是一个经典的计算机思想实验。首先, 为避免混淆,我们需要认识到两将军问题虽然与拜占庭将军问题相关,但两者不是一个东西。拜占庭将军问题是一个更通用的两将军问题版本&…

微信小程序开发系列五:微信小程序中如何响应用户输入事件

2019独角兽企业重金招聘Python工程师标准>>> 微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 微信小程序…

理解Object.defineProperty的作用

Object.defineProperty 是vue中双向绑定的基础。vue是通过数据劫持的方式来做数据绑定的,最核心的方法是通过 Object.defineProperty()方法来实现对属性的劫持,达到能监听到数据的变动。要实现数据的双向绑定, 当使用存取器描述属性的特性的时…

直播修仙:使用.NET 的 WebView2 如何获取请求的响应内容,以微信直播的互动直播为例...

背景近几年直播行业快速发展,门槛也越来越低,越来越的人涌入直播大军。不得不说,直播不仅带来了更多的娱乐消遣,还提供了一个新型的就业方式。说起直播的类型,有一个非常小众的娱乐直播,没有主播&#xff0…

web第6次作业position

position 属性指定了元素的定位类型。 position 属性的五个值: static (静态定位) HTML元素的默认值,即没有定位,元素出现在正常的流中。 静态定位的元素不会受到 top, bottom, left, right影响。 div.stati…

GeneralUpdate版本更新公告20221009

大家好我是juster,GeneralUpdate的开源项目作者。这次将发布GeneralUpdate兼容.NET MAUI和多平台为核心的版本。经过国庆假期的打磨修复了大量开源社区开发者的提交的bug和不合理修改建议,重构、删除了大量代码和结构使用和上一个版本没有太大变化。1.更…

实验2 java_《Java程序设计》实验2

1、使用java语言编程,从键盘输入N个整数存储到数组中,求数组所有元素的和、最大值和平均值。import java.util.Scanner;public class Program01{public static void main(String [] args){Scanner scanner new Scanner(System.in);System.out.println(&…

WPF遍历当前容器中某种控件的方法

原文:WPF遍历当前容器中某种控件的方法版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37591671/article/details/79528845 WPF遍历当前容器中某种控件的方法 WPF遍历当前容器中某种控件的方法1.目的:2.实现思…

善用Object.defineProperty巧妙找到修改某个变量的准确代码位置

2019独角兽企业重金招聘Python工程师标准>>> 我今天的工作又遇到一个难题。前端UI右下角这个按钮被设置为"禁用(disabled)"状态。 这个按钮的可用状态由属性enabled控制。我通过调试发现,一旦下图第88行代码执行完毕之后,这个按钮的…

使用 C# 开发的轻量级开源数据库 LiteDB

你好,这里是 Dotnet 工具箱,定期分享 Dotnet 有趣,实用的工具或组件,希望对您有用!简介 LiteDB 是一个小型、快速、轻量级的 .NET NoSQL 嵌入式数据库,也就是我们常说的 K/V 数据库,完全用 C# …

微信小程序仿微信SlideView组件slide-view

微信小程序仿微信SlideView组件。 使用 1、安装 slide-view 从小程序基础库版本 2.2.1 或以上、及开发者工具 1.02.1808300 或以上开始,小程序支持使用 npm 安装第三方包。 npm install --save miniprogram-slide-view2、在需要使用 slide-view 的页面 page.json 中…

hibernate 环境搭建测试

对于hibernate的介绍,网络上一搜一堆,恐怕我写的也没前辈总结的好。这个博主总结的十分好,方便大家欣赏 http://blog.csdn.net/liujiahan629629/article/details/21442607 真正要掌握,还得需要自己动手,才能丰衣足食。所需jar包j…

C# WPF 中使用 MahApps.Metro.IconPacks 提供的图标

概述我们在桌面应用程序开发时经常会用到很多图标,时常我是在阿里矢量图库下载:https://www.iconfont.cn/,然后存放多项目中去引用,不过这样操作起来有点繁琐,这节我们介绍一个更加便捷的方式.用法概述Wpf 图标管理工具…

java多线程同时运行_Java实现的两个线程同时运行案例

本文实例讲述了Java实现的两个线程同时运行。分享给大家供大家参考,具体如下:/*** 两个案例同时运行案例* 1:这个两个线程并不是有规律的运行而是有没有规律的交替运行*/package com.test3;public class Demo10_3 {/*** param args*/public static void …

dotnet 用 SourceGenerator 源代码生成技术实现中文编程语言

相信有很多伙伴都很喜欢自己造编程语言,在有现代的很多工具链的帮助下,实现一门编程语言,似乎已不是一件十分困难的事情。我利用 SourceGenerator 源代码生成技术实现了一个简易的中文编程语言,核心原理是将中文编程语言翻译为 C#…

HTTP/2 规格制定完成

IETF HTTP工作者的负责人Mark Nottingham在其博客上宣布HTTP/2规格制定完成,接下来将是分配RFC编号和正式发表。HTTP是Web的核心技术之一,相比HTTP/1,HTTP/2的改进之处包括更快的页面加载;更长久的连接;服务器推送&…

easyui combobox java_Easyui的combobox实现动态数据级联效果

实现从数据库中动态获取对应的list集合,并在easyui的combobox中显示出来。实现的效果如下:1、数据库的表设计如图所示2、数据库中填写相关的数据,如图所示。如图所示【法律法规】是所属栏目,因此他的字段parentid是0。【中国公民出…

为什么应该默认将 Class 设为密封类?

前言最近在 dotnet/sdk 上看到一个 Issue,它提出了一个有趣的要求:默认情况下将类设置为密封类(Sealed)?什么是密封类?默认情况下,类是开放的,这意味着它是可以被继承的。例如:class BaseClass …