This is a library to make Mica available in WPF.
MIT License
The project aim to mimic Windows 11 Mica Behaviors in a WPF application since WPF is a well established framework and also it aims to gracefully revert to a Windows 10 style that is kinda similar to the Dark and Light mode of Windows 11 to keep inline with the style.
Windows 11
Windows 10 Supports falling back to dark or light theme on Windows 10.
Here are some exemple controls:
To get a local copy up and running follow these simple steps.
Install-Package MicaWPF (or MicaWPF.Lite)
nuget restore MicaWPF.sln
git clone https://github.com/Simnico99/MicaWPF.git
nuget restore MicaWPF.sln
(Works for both MicaWPF and MicaWPF.Lite)
<Window><Window/>
for <controls:MicaWindow></controls:MicaWindow>
.xmlns:controls="clr-namespace:MicaWPF.Controls;assembly=MicaWPF"
(For MicaWPF.Lite xmlns:controls="clr-namespace:MicaWPF.Lite.Controls;assembly=MicaWPF.Lite"
).Here is an exemple:
<controls:MicaWindow
x:Class="MicaWPF.DesktopApp.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:local="clr-namespace:MicaWPF.DesktopApp"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:controls="clr-namespace:MicaWPF.Controls;assembly=MicaWPF"
mc:Ignorable="d"
Title="MainWindow"
Height="450"
Width="800" >
<Grid>
</Grid>
</controls:MicaWindow>
<mica:ThemeDictionary Theme="Auto" />
and <mica:ControlsDictionary />
to your App.xaml resources.Here is an exemple:
<Application
x:Class="MicaWPF.DesktopApp.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mica="clr-namespace:MicaWPF.Styles;assembly=MicaWPF" <!-- For the lite version: clr-namespace:MicaWPF.Styles;assembly=MicaWPF.Lite -->
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<mica:ThemeDictionary DesignModeTheme="Dark" Theme="Auto" /> <!-- And Here (You can change to Light, Dark or auto here) -->
<!-- <mica:ThemeDictionary /> works too-->
<mica:ControlsDictionary /> <!-- This is mandatory -->
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
(Does not apply to MicaWPF.Lite) Now get into your Window code:
using MicaWPF.Controls;
.MicaWindow
.Here is an exemple of what it might look like using .NET8:
using MicaWPF.Controls;
namespace MicaWPF.DesktopApp;
public partial class MainWindow : MicaWindow
{
public MainWindow()
{
InitializeComponent();
}
}
You will need to change your CSPROJ to include the windows build after the netx.0-windows. Here is an exemple using .Net8.0 just change the net8 for net7 or net6 for the other versions.
MicaWPF:
<TargetFramework>net8.0-windows10.0.19041.0</TargetFramework> <!-- This can be changed with your available Windows SDK build ex: net8.0-windows10.0.22621.0</-->
<TargetPlatformMinVersion>7.0</TargetPlatformMinVersion>
MicaWPF.Lite:
<TargetFramework>net7.0-windows</TargetFramework>
For more examples, please refer to the Documentation
See the open issues for a list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
git checkout -b feature/AmazingFeature
)git commit -m 'Add some AmazingFeature'
)git push origin feature/AmazingFeature
)A: The MicaWPF.Lite Nuget package only contains the MicaWindow code and a trim down accent color detection so it takes way less space. Take note that accent colors are not as accurate on the light version.
A: Apply TitleBarType="WinUI" like this:
<mica:MicaWindow [your code...]
TitleBarType="WinUI"
>
[other code...]
</mica:MicaWindow>
Distributed under the MIT License. See LICENSE
for more information.
Simnico99 - @TheSimnico99
Project Link: https://github.com/Simnico99