赞
踩
改造已有winform项目,原有项目包含多种第三方插件
WPF Material Design 是一种基于 Windows Presentation Foundation(WPF)框架的设计风格,旨在为桌面应用程序提供现代、富有层次感的用户界面。
它结合了Google的Material Design理念,突显实用性和美观性,为开发人员提供了一套丰富的控件、动画和样式,以改善用户体验。
这个设计风格注重阴影、动画和色彩的运用,使界面看起来更加生动、有层次。
WPF Material Design简化了开发流程,开发者可以轻松地集成这些现代化的设计元素,从而创建出符合当今用户期望的高质量应用程序。
完全开源,是 WPF 最流行的 GUI 库之一,该库还与 MahApps 和 Dragablz 兼容。
现代化设计风格:基于Google的Material Design理念,采用现代、扁平、富有层次感的设计元素,使用户界面看起来更加时尚和符合当代趋势。
丰富的控件库:提供了一套丰富的现成控件,包括按钮、文本框、卡片等,这些控件都经过设计,使得开发者能够轻松构建符合Material Design标准的应用程序。
动画效果:强调运用动画增强用户体验,如过渡效果、按钮点击效果等,使界面更生动、引人注目。
色彩和图标的规范化:Material Design 强调使用清晰、鲜艳的色彩,以及简单直观的图标,有助于提高用户认知和操作的便捷性。
阴影和深度感:通过巧妙运用阴影效果,为界面元素增加深度感,使用户更容易理解界面的层次结构和交互关系。
可定制性:虽然提供了一套默认的设计元素,但也允许开发者根据自己的需求进行定制,以满足特定应用程序的设计要求。
支持高分辨率屏幕:考虑了高分辨率显示屏的使用,确保应用程序在各种屏幕尺寸和分辨率下都能够展现出最佳的外观。
下载https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit/releases
本地启动启动 MaterialDesignDemo.exe,可以查看多种官方示例组件
选择.net版本
NuGet添加MaterialDesign依赖
配置App.xaml
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" />
完整配置App.xaml
- <Application.Resources>
- <ResourceDictionary>
- <ResourceDictionary.MergedDictionaries>
- <materialDesign:CustomColorTheme BaseTheme="Light" PrimaryColor="Aqua" SecondaryColor="DarkGreen" />
- <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Light.xaml" />
- <!-- <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" /> -->
- <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesign3.Defaults.xaml" />
- <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.DeepPurple.xaml" />
- </ResourceDictionary.MergedDictionaries>
- </ResourceDictionary>
- </Application.Resources>
注意:MaterialDesign 5.0 版本中已修改文件名 MaterialDesignTheme.Defaults.xaml 替代为 MaterialDesign2.Defaults.xaml and MaterialDesign3.Defaults.xaml
详细变更可参考:https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit/discussions/3466
MainWindow.xaml添加内容
<materialDesign:DialogHost DialogTheme="Inherit" DialogContentUniformCornerRadius="20"> <materialDesign:DialogHost.DialogContent> <StackPanel Margin="16"> <TextBlock Text="Add a new fruit." /> <TextBox x:Name="FruitTextBox" Margin="0,8,0,0" HorizontalAlignment="Stretch" /> <StackPanel HorizontalAlignment="Right" Orientation="Horizontal"> <Button Margin="0,8,8,0" Command="{x:Static materialDesign:DialogHost.CloseDialogCommand}" Content="ACCEPT" IsDefault="True" Style="{StaticResource MaterialDesignFlatButton}"> <Button.CommandParameter> <system:Boolean xmlns:system="clr-namespace:System;assembly=mscorlib"> True </system:Boolean> </Button.CommandParameter> </Button> <Button Margin="0,8,8,0" Command="{x:Static materialDesign:DialogHost.CloseDialogCommand}" Content="CANCEL" IsCancel="True" Style="{StaticResource MaterialDesignFlatButton}"> <Button.CommandParameter> <system:Boolean xmlns:system="clr-namespace:System;assembly=mscorlib"> False </system:Boolean> </Button.CommandParameter> </Button> </StackPanel> </StackPanel> </materialDesign:DialogHost.DialogContent> <Border MinHeight="256" BorderBrush="{DynamicResource PrimaryHueMidBrush}" BorderThickness="1" ClipToBounds="True"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <ListBox x:Name="FruitListBox"> <ListBoxItem Content="Apple" /> <ListBoxItem Content="Banana" /> <ListBoxItem Content="Pear" /> </ListBox> <materialDesign:ColorZone Grid.Row="1" Effect="{DynamicResource MaterialDesignShadowDepth5}" Mode="PrimaryMid"> <TextBlock Margin="16" Text="Fruit Bowl" /> </materialDesign:ColorZone> <Button Grid.Row="0" Margin="0,0,28,-20" HorizontalAlignment="Right" VerticalAlignment="Bottom" Command="{x:Static materialDesign:DialogHost.OpenDialogCommand}" Content="{materialDesign:PackIcon Kind=Plus, Size=22}" Style="{StaticResource MaterialDesignFloatingActionMiniSecondaryButton}" /> </Grid> </Border> </materialDesign:DialogHost>
编译运行
除了使用官方定义的主题外,还可以手动指定主题颜色
- #修改 PrimaryColor和SecondaryColor值为自定义RGB颜色
- <materialDesign:CustomColorTheme BaseTheme="Light" PrimaryColor="#494949" SecondaryColor="#408400" />
效果:
相较于AvaloniaUI来说,MaterialDesignInXAML适合老项目改造升级,在适配winform、wpf等原生组件上有明显优势,而前者更适合新项目开发,来满足应用的跨平台性
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。