DMSkin-for-WPF是一個基於WPF的.Net WPF開源界面庫,實現了無邊框的WPF開發方案,內置部分控制項模板. 你可以參照模板自行修改完善。(以下簡稱DFW)。 核心 DFW實現了比較完美的無邊框窗體方案,並且拖拽全部採用WIN32消息實現。拖拽依靠桌面邊緣完美,高DPI支持,窗體不會變 ...
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