MicaWPF
MicaWPF copied to clipboard
This is a library to make Mica available in WPF.
MicaWPF
This is a library to make Mica available in WPF.
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
Table of Contents
-
About The Project
- Built With
-
Getting Started
- Installation
- Usage
- Roadmap
- Contributing
- License
- Contact
- Acknowledgements
About The Project
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:

Built With
Getting Started
To get a local copy up and running follow these simple steps.
Installation
NuGet
- Download via the Nuget package manager or use the NuGet Command line.
Install-Package MicaWPF (or MicaWPF.Lite) - If you have used the NuGet Command line restore de packages.
nuget restore MicaWPF.sln
Using source
- Clone the repo.
git clone https://github.com/Simnico99/MicaWPF.git - Restore NuGet packages.
nuget restore MicaWPF.sln - Add the project in your project reference.
Usage
(Works for both MicaWPF and MicaWPF.Lite)
- To start Change the
<Window><Window/>for<controls:MicaWindow></controls:MicaWindow>. - Add the namespace by adding
xmlns:controls="clr-namespace:MicaWPF.Controls;assembly=MicaWPF"(For MicaWPF.Litexmlns: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>
- You need to add
<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.Lite.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:
- Add the namespace
using MicaWPF.Controls;. - Change the Window inherited class to
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();
}
}
Note For .Net6.0, .Net7.0 and .Net8.0
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
Roadmap
See the open issues for a list of proposed features (and known issues).
Contributing
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.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
FAQ
Q: What is the difference between MicaWPF and MicaWPF.Lite?
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.
Q: The title bar buttons are weird, how do I fix?
A: Apply TitleBarType="WinUI" like this:
<mica:MicaWindow [your code...]
TitleBarType="WinUI"
>
[other code...]
</mica:MicaWindow>
License
Distributed under the MIT License. See LICENSE for more information.
Contact
Simnico99 - @TheSimnico99
Project Link: https://github.com/Simnico99