DMSkin-for-WPF是一个基于WPF的.Net WPF开源界面库,实现了无边框的WPF开发方案,内置部分控件模板. 你可以参照模板自行修改完善。(以下简称DFW)。

核心

DFW实现了比较完美的无边框窗体方案,并且拖拽全部采用WIN32消息实现。拖拽依靠桌面边缘完美,高DPI支持,窗体不会变形或异常

另外,由于我对MVVM不擅长,所以DEMO并不是采用MVVM框架。

版本更新

2.0.0.1 (2018-01-30)

1.新增一个窗口Demo。

2.0.0.0 (2017-10-15)

1.移除WindowMode。

2.目前WIN7有点小瑕疵。

3.0 (2017-9-21)

1.WIN7以及以下采用单层。

2.WIN8、WIN10采用双层。

2.4 (2017-9-21)

1.窗口边缘拉伸(右,右下,下)。

2.阴影恢复速度调为200ms

3.阴影可以完全关闭(高效率,配合窗口虚线使用)

2.3 (2017-9-20)

1.修复ALT+TAB 出现2个窗体的BUG。

2.阴影层背景色,拉伸 拖拽时 出现的颜色。选择跟主窗体 接近的颜色 用户体验更好

2.2 (2017-9-20)

1.修复多个窗口无法激活聚焦的BUG。

2.拖动窗口支持显示阴影层

3.阴影层延迟显示的BUG修复

2.1 (2017-9-19)

1.优化最小化恢复阴影顺序,不会像网易云音乐一样出现双层了。

2.去除窗口裁剪代码(之前的裁剪操作多此一举)

3.拖动窗口位置时隐藏阴影提高效率

【2.0版本】采用双层窗体+Win32实现无边框,2.0版本不支持圆角窗体,不支持窗体透明,但是拥有完美最小化的动画。如果采用虚线边框,则可以去除双层窗体。

1.0版本】采用WindowStyle.None + 透明实现无边框,版本缺陷是无边框通病,窗体最小化 动画失效了。但是我用xaml实现了动画(动画流畅程度取决于显卡),需要这个版本的源码请点击我的头像进到另外一个1.0项目中获取

2.0 (2017-9-13)

1.版本升级到2.0,最小化动画终于解决,此方案可以移植到winform无边框中,这是我所知道的世界第一例WPF/winfrom无边框最小化动画方案。

0.8 (2017-8-26)

1.修复最小化动画以及恢复动画(尚可优化)

0.7 (2017-8-25)

1.代码托管到GITHUB

2.新增Demo:周杰伦音乐播放器

3.新增Demo:默认模板窗体

0.6 (2017-3-6)

1.新增DMSystemButtonHoverColor 系统按钮鼠标悬浮的背景色(圆角窗体请设为透明,效果更好)

2.新增窗体模式:扁平化Metro+阴影Shadow 2种风格窗体

使用说明

1.引用DMSkin.WPF.DLL
2.Window继承修改为:MainWindow : DMSkinWindow
3.添加引用:xmlns:DMSkin="clr-namespace:DMSkin.WPF;assembly=DMSkin.WPF"
4.XAML继承修改为: DMSkin:DMSkinWindow x:Class="DMSkin.WPF.Test.MainWindow"

  

窗体属性

Foreground="White"                    //前景色
Background="White" //背景色
DMShowMin="True" //显示系统按钮-最小化
DMShowMax="True" //显示系统按钮-最大化
DMShowClose="True" //显示系统按钮-关闭
DMWindowShadowSize="10" //窗体边框阴影大小
DMWindowShadowColor="#FFC8C8C8" //窗体边框阴影颜色
DMWindowShadowDragVisibility="False" //窗体拖动时是否显示阴影层
DMWindowShadowVisibility="False" //窗体是否有阴影层[关闭阴影层]
DMWindowShadowBackColor="#FF323CAD" //阴影背景色,选择跟主窗体相近的颜色 拉伸跟拖动 用户体验更好|#FF323CAD 为蓝色
DMSystemButtonSize="50" //系统按钮大小
DMSystemButtonForeground="#FF666666" //系统按钮[文字]颜色
DMSystemButtonHoverColor="#33000000" //系统按钮的鼠标悬浮[背景]色
DMSystemButtonHoverForeground="White" //系统按钮的鼠标悬浮[文字]颜色
DMSystemButtonCloseHoverColor="Red" //系统【关闭】按钮的鼠标悬浮[背景]色-默认为红色
DMSystemButtonShadowEffect="0" //系统按钮的阴影大小
ResizeMode="CanResize" //边框拉伸方案CanResiz和CanResizeWithGrip
Height="700" Width="1000" //窗体大小
MinHeight="268" MinWidth="360" //窗体最大以及最小属性
WindowStartupLocation="CenterScreen" //窗体初始位置 DMMetroBorderColor="#FFC8C8C8" //窗体边框颜色-仅Metro有效 --2.0中移除
DMMetroBorderSize="1" //边框大小-仅Metro有效 --2.0中移除
DMWindow="Shadow" //Shadow-阴影模式 Metro-线条扁平化模式 --2.0中移除

  

资源引用

<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/DMSkin.WPF;Component/Themes/DMSkin.xaml" />
<ResourceDictionary Source="pack://application:,,,/DMSkin.WPF;Component/Themes/DMColor.xaml" />
<ResourceDictionary Source="pack://application:,,,/DMSkin.WPF;Component/Themes/DMScrollViewer.xaml" />
<ResourceDictionary Source="pack://application:,,,/DMSkin.Wpf;component/Themes/DMButton.xaml" />
<ResourceDictionary Source="pack://application:,,,/DMSkin.Wpf;component/Themes/DMTabControl.xaml" />
<ResourceDictionary Source="pack://application:,,,/DMSkin.Wpf;component/Themes/DMRadioButton.xaml" />
<ResourceDictionary Source="pack://application:,,,/DMSkin.Wpf;component/Themes/DMTreeView.xaml" />
<ResourceDictionary Source="pack://application:,,,/DMSkin.Wpf;component/Themes/DMDataGrid.xaml" />
<ResourceDictionary Source="pack://application:,,,/DMSkin.Wpf;component/Themes/DMListBox.xaml" />
<ResourceDictionary Source="pack://application:,,,/DMSkin.Wpf;component/Themes/DMSlider.xaml" />
<ResourceDictionary Source="pack://application:,,,/DMSkin.Wpf;component/Themes/DMCheckBox.xaml" />
<ResourceDictionary Source="pack://application:,,,/DMSkin.Wpf;component/Themes/DMContextMenu.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>

  

DMSkin-for-WPF 2.0.0.1

开源地址:https://github.com/944095635/DMSkin-for-WPF

WPF 使用DMSkin for WPF 快速搭建漂亮的WPF程序的更多相关文章

  1. 快速搭建简单的LBS程序——地图服务

    很多时候,我们的程序需要提供需要搭建基于位置的服务(LBS),本文这里简单的介绍一下其涉及的一些基本知识. 墨卡托投影 地图本身是一个三维图像,但在电脑上展示时,往往需要将其转换为二维的平面图形,需要 ...

  2. WPF从入门到放弃系列第一章 初识WPF

    什么是WPF WPF(Windows Presentation Foundation)是微软推出的基于Windows Vista的用户界面框架,属于.NET Framework 3.0的一部分.它提供 ...

  3. 基于ASP.NET Core 3.0快速搭建Razor Pages Web应用

    前言 虽然说学习新的开发框架是一项巨大的投资,但是作为一个开发人员,不断学习新的技术并快速上手是我们应该掌握的技能,甚至是一个.NET Framework开发人员,学习.NET Core 新框架可以更 ...

  4. 后续来啦:Winform/WPF中快速搭建日志面板

    后续来啦:Winform/WPF中快速搭建日志面板 继昨天发文ASP.NET Core 可视化日志组件使用(阅读文章,查看视频)后,视频下有朋友留言 "Winform客户端的程序能用它不?& ...

  5. UI-WPF_UI:WPF UI - DMSkin官方网站

    ylbtech-UI-WPF_UI:WPF UI - DMSkin官方网站 1.返回顶部 1. QQ: 944095635 DMSkin.com 首页 论坛 定制 博客  联系   DMSkin 3. ...

  6. [WPF] 考古Expression Web:微软当年最漂亮的WPF软件

    1. 什么是Expression Web Expression Studio是微软在2007年推出的一套针对设计师的套件,其中包含专业的设计工具和新技术,可以弹性且自由地将设计方案转为实际--无论设计 ...

  7. WPF快速入门系列(1)——WPF布局概览

    一.引言 关于WPF早在一年前就已经看过<深入浅出WPF>这本书,当时看完之后由于没有做笔记,以至于我现在又重新捡起来并记录下学习的过程,本系列将是一个WPF快速入门系列,主要介绍WPF中 ...

  8. WPF案例 (三) 模拟QQ“快速换装"界面

    原文:WPF案例 (三) 模拟QQ"快速换装"界面 这个小程序使用Wpf模拟QQ快速换装页面的动画特效,通过使用组合快捷键Ctrl+Left或Ctrl+Right,可实现Image ...

  9. WPF 使用不安全代码快速从数组转 WriteableBitmap

    原文:WPF 使用不安全代码快速从数组转 WriteableBitmap 本文告诉大家一个快速的方法,直接把数组转 WriteableBitmap 先来说下以前的方法,以前使用的是 BitmapSou ...

随机推荐

  1. PhpStorm (强大的PHP开发环境)2017.2.4 附注册方法

    http://www.oyksoft.com/soft/40722.html?pc=1 最新版PhpStorm 2017正式版改进了PHP 7支持,改进代码完成功能. PhpStorm 是最好的PHP ...

  2. Intellij idea 中修改java web代码 ,网页不同步

    问题可能出在  Intellij  idea 没有将源码保存在本地,浏览器访问了缓存而没有访问最新文件 用命令行查看了源码,同步了 接着禁止浏览器缓存,网页同步了 打开火狐浏览器 输入 about:c ...

  3. IOS中UIScrollView的contentSize、contentOffset和contentInset属性

    IOS中,UIScrollView是可以滚动的视图,其中最常用的UITableView就是继承了UIScrollView. 跟所有的view一样,UIScrollView有一个frame属 性,同时, ...

  4. JAVA BASE64

    Base64编码说明:     Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式. 如果剩下的字符不足3个字节, ...

  5. 如何更改MyEclipse中XML文件的字体?

    windows>Preferences>General>Appearance>Colors and Fonts>Basic>Text Font

  6. Qt出现堆溢出(Error Code -1073741823)

    症状 在使用Debug模式时,程序可以正常启动,但是切换到Release模式,程序报错,错误码-1073741823 原因 程序中使用了过多的new.比如: QActionGroup *mProtoc ...

  7. java.lang.ClassNotFoundException: com.radiadesign.catalina.session.RedisSessionHandlerValve

    org.apache.tomcat.util.digester.Digester.startElement Begin event threw exception java.lang.ClassNot ...

  8. JDK自带的缓存--包装类的缓存

    关于包装类和基本类型的文章我前面已经整理过了,这里大致罗列下重点.我们主要是想研究下包装类的缓存. 1,自动装箱和自动拆箱 java1.5之后就提供了自动装箱和自动拆箱的功能,当然我们也可以手动来装箱 ...

  9. maven系列--eclipse的m2插件

    工欲善其事,必先利其器.我是讨厌用CMD指令来操作maven,既然eclipse已经给我们提供了插件,那我们为什么不使用呢?而且我觉得eclipse的各种插件都挺好用的.好了废话不多说了,现在开始整理 ...

  10. Python 正则表达式 (python网络爬虫)

    昨天 2018 年 01 月 31 日,农历腊月十五日.20:00 左右,152 年一遇的月全食.血月.蓝月将今晚呈现空中,虽然没有看到蓝月亮,血月.月全食也是勉强可以了,还是可以想像一下一瓶蓝月亮洗 ...