运行环境 VS2019 + .net 5 ,新建一个基于.net 5的WPF项目
1、也可以打开官网按步骤添加
https://mahapps.com/docs/guides/quick-start
2、打开VS中的NuGet 搜索 MahApps,安装MahApps.Metro,MahApps.Metro.IconPacks安装成功如下图所示
安装成功如下图所示
3、按官网提示,添加引用
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! -->
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
<!-- Theme setting -->
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Themes/Light.Blue.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
4、打开MainForm.xaml,添加以下引用
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks" 以下图标使用的
xmlns:mah="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
将<Window x:Class="CS.MainWindow">修改成<mah:MetroWindow x:Class="CS.MainWindow"
5、添加引用“using MahApps.Metro.Controls;”,删除MainForm.xaml.cs文件中的对windows窗体的基类引用“Window”。
.net5项目不要继承MetroWindow,否则会出现如下错误。
6、按以上步骤修改完成后,运行程序如下,表示成功 引用Metro。如运行失败,最检查下图中红框部分是否修改正确。
7、在窗体的标题栏添加按钮,菜单等功能。使用LeftWindowCommands和RightWindowCommands向标题栏添加控件。
代码如下:
<mah:MetroWindow x:Class="CS.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
xmlns:mah="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:CS"
mc:Ignorable="d"
GlowBrush="{DynamicResource MahApps.Brushes.Accent}"
ResizeMode="CanResizeWithGrip"
WindowStartupLocation="CenterScreen"
Title="MainWindow" Height="450" Width="800">
<mah:MetroWindow.LeftWindowCommands>
<mah:WindowCommands>
<Button Click="btnICON" ToolTip="悬浮提示">
<iconPacks:PackIconModern Width="22" Height="22" Kind="SocialGithubOctocat" />
</Button>
<Button Click="btnICON" ToolTip="悬浮提示1">
<iconPacks:PackIconModern Width="22" Height="22" Kind="App" />
</Button>
</mah:WindowCommands>
</mah:MetroWindow.LeftWindowCommands>
<mah:MetroWindow.RightWindowCommands>
<mah:WindowCommands>
<Button Click="btnTool" Content="自定义按钮">
<Button.ContentTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<iconPacks:PackIconModern Width="22" Height="22" VerticalAlignment="Center" Kind="Delete" />
<TextBlock Margin="4 0 0 0" VerticalAlignment="Center" Text="{Binding}" />
</StackPanel>
</DataTemplate>
</Button.ContentTemplate>
</Button>
<Button Click="btnTool">
<Button.ContentTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<iconPacks:PackIconModern Width="22" Height="22" VerticalAlignment="Center" Kind="Add" />
<TextBlock Margin="4 0 0 0" VerticalAlignment="Center" Text="{Binding}" />
</StackPanel>
</DataTemplate>
</Button.ContentTemplate>
</Button>
<Menu IsMainMenu="True" x:Name="mnuMainMenu" Height="28" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="12" Background="Transparent" Width="Auto" >
<MenuItem Header="_File" x:Name="mnuFile" Visibility="Visible" Background="Transparent">
<MenuItem Header="_Open" x:Name="mnuOpen" Background="Transparent" Command="{Binding MenuOpenCommand}" />
<MenuItem Header="_Exit" x:Name="mnuExit" Click="" Background="Transparent"/>
</MenuItem>
<MenuItem Header="_Tools" Background="Transparent" >
<MenuItem Header="_Repeat" x:Name="mnuRepete" Background="Transparent" >
<MenuItem Header="Repeat None" Command="{Binding RepeatNoneCommand}" IsCheckable="True"/>
<MenuItem Header="Repeat One" Command="{Binding RepeatOneCommand}" IsCheckable="True"/>
<MenuItem Header="Repeat All" Command="{Binding RepeatAllCommand}" IsCheckable="True"/>
</MenuItem>
</MenuItem>
<MenuItem Header="_Store" x:Name="smOnlineMode" Background="Transparent" Click="" IsCheckable="True" />
<MenuItem Header="_Play Mode" x:Name="smPlayMode" Background="Transparent" Click="" IsCheckable="True" IsChecked="True"/>
<MenuItem Header="_Play" Background="Transparent" >
<MenuItem Header="_Play" x:Name="mnuPlay" Background="Transparent" Command="{Binding PlayCommand}"/>
<MenuItem Header="P_ause" x:Name="mnuPause" Background="Transparent" Command="{Binding PauseCommand}"/>
<MenuItem Header="_Stop" x:Name="mnuStop" Background="Transparent" Command="{Binding StopCommand}"/>
<Separator/>
<MenuItem Header="_Next" x:Name="mnuNext" Background="Transparent" Command="{Binding NextTrackCommand}"/>
<MenuItem Header="P_revious" x:Name="mnuPrevious" Background="Transparent" Command="{Binding PreviousTrackCommand}" />
<MenuItem Header="_Mute/UnMute" x:Name="smnuMute" Background="Transparent" Command="{Binding MuteSoundCommand}" />
<!--Command="{Binding MuteSoundCommand}"-->
</MenuItem>
<MenuItem Header="_Help" Background="Transparent" >
<MenuItem Header="_Help" x:Name="smnuOnlineHelp" Background="Transparent" Click="" />
<Separator />
<MenuItem Header="_Register Player" x:Name="smnuRegister" Background="Transparent" Click="" />
<MenuItem Header="_About Codero Music Player" x:Name="smnuAbout" Background="Transparent" Click="" />
</MenuItem>
</Menu>
</mah:WindowCommands>
</mah:MetroWindow.RightWindowCommands>
<Grid/>
</mah:MetroWindow>
8、修改窗体主题颜色
可修改主题如下:
"Red", "Green", "Blue", "Purple", "Orange", "Lime", "Emerald", "Teal", "Cyan", "Cobalt", "Indigo", "Violet", "Pink", "Magenta", "Crimson", "Amber", "Yellow", "Brown", "Olive", "Steel", "Mauve", "Taupe", "Sienna", "Light.Blue", "Dark.Blue"
对应中文:
“红色”、“绿色”、“蓝色”、“紫色”、“橙色”、“石灰”、“祖母绿”、“青色”、“青色”、“钴色”、“靛蓝”、“紫罗兰色”、“粉红色” ”、“洋红色”、“深红色”、“琥珀色”、“黄色”、“棕色”、“橄榄色”、“钢色”、“紫红色”、“灰褐色”、“赭色”,“浅蓝” 、“深蓝”
只需要修改App.xaml文件中的主题就可以了
源代码下载地址:
https://download.csdn.net/download/zhouhui1982/20234249?spm=1001.2014.3001.5501