WPF 使用DMSkin for WPF 快速搭建漂亮的WPF程序

简介: 原文:WPF 使用DMSkin for WPF 快速搭建漂亮的WPF程序DMSkin-for-WPF是一个基于WPF的.Net WPF开源界面库,实现了无边框的WPF开发方案,内置部分控件模板. 你可以参照模板自行修改完善。
原文: WPF 使用DMSkin for WPF 快速搭建漂亮的WPF程序

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

目录
相关文章
|
C# Windows
WPF 获取程序路径的一些方法,根据程序路径获取程序集信息
原文:WPF 获取程序路径的一些方法,根据程序路径获取程序集信息 一、WPF 获取程序路径的一些方法方式一 应用程序域 //获取基目录即当前工作目录 string str_1 = System.
1618 0
|
11月前
|
C#
WPF防止程序多次运行
WPF防止程序多次运行
135 0
WPF界面无法正常显示(资源引用,如转换器),但程序正常运行
WPF界面无法正常显示(资源引用,如转换器),但程序正常运行
WPF界面无法正常显示(资源引用,如转换器),但程序正常运行
|
C#
WPF异常捕获,并使程序不崩溃!
原文:WPF异常捕获,并使程序不崩溃! 在.NET中,我们使用try-catch-finally来处理异常。但,当一个Exception抛出,抛出Exception的代码又没有被try包围时,程序就崩溃了。
2089 0
|
Java C# 程序员
WPF程序中的弱事件模式
原文:WPF程序中的弱事件模式 在C#中,得益于强大的GC机制,使得我们开发程序变得非常简单,很多时候我们只需要管使用,而并不需要关心什么时候释放资源。但是,GC有的时并不是按照我们所期望的方式工作。 例如,我想实现一个在窗口的标题栏中实时显示当前的时间,一个比较常规的做法如下:     var...
1086 0
|
C# Windows
使WPF程序应用预置的控件风格, 如Aero, Luna, Royale, Classic等
原文:使WPF程序应用预置的控件风格, 如Aero, Luna, Royale, Classic等      WPF预设有Aero, Classic, Luna, Royale主题, WPF程序会根据Windows主...
1231 0
|
C#
#747 –在WPF程序的触摸操作中使用惯性移动 (Implementing Inertia during Touch Manipulation)
原文:#747 –在WPF程序的触摸操作中使用惯性移动 (Implementing Inertia during Touch Manipulation) 原文地址:https://wpf.2000things.com/2013/02/01/747-implementing-inertia-during-touch-manipulation/ 在WPF触摸操作滑动控件的时候,有的时候希望控件能够在手指离开控件后依照惯性继续滑动,直至慢慢减速停止。
1021 0
|
C#
c# 守护进程,WPF程序自守护
原文:c# 守护进程,WPF程序自守护 版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/lwwl12/article/details/79035246 如何防止wpf程序异常关闭,守护进程是暂时能想到的最好方式。
2671 0
|
C# 开发者
WPF 程序无法触摸操作?我们一起来找原因和解决方法!
原文:WPF 程序无法触摸操作?我们一起来找原因和解决方法! 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:http://blog.csdn.net/wpwalter/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
1251 0
|
C#
最新用WPF为触摸屏写了一个手写程序,双格输入的
原文:最新用WPF为触摸屏写了一个手写程序,双格输入的 双格输入可以提高手写速度,当前字写完以后可以自动识别提交,写下一个字。
1062 0