MicaWPF
This is a library to make Mica available in WPF.
Install / Use
/learn @Simnico99/MicaWPFREADME
<a href="https://www.nuget.org/packages/MicaWPF/latest"></a>
<a href="https://www.nuget.org/packages/MicaWPF/">
</a>
<a href="https://www.codefactor.io/repository/github/simnico99/micawpf/overview/main">
</a>
<a href="https://dev.azure.com/ZirconCloud/MicaWPF/_build">
</a><br/>
<a href="https://github.com/Simnico99/MicaWPF/graphs/contributors">
</a>
<a href="https://github.com/Simnico99/MicaWPF/network/members">
</a>
<a href="https://github.com/Simnico99/MicaWPF/stargazers">
</a>
<a href="https://github.com/Simnico99/MicaWPF/issues">
</a>
<a href="https://github.com/Simnico99/MicaWPF/blob/main/LICENSE">
</a>
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<br/>

Windows 10<br/>
Supports falling back to dark or light theme on Windows 10.
<br/>
Here are some exemple controls:

Built With
<!-- GETTING STARTED -->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.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 .NET9:
using MicaWPF.Controls;
namespace MicaWPF.DesktopApp;
public partial class MainWindow : MicaWindow
{
public MainWindow()
{
InitializeComponent();
}
}
Note For .Net6.0, .Net7.0, .Net8.0 and .Net9.0
You will need to change your CSPROJ to include the windows build after the netx.0-windows. Here is an exemple using .Net9.0 just change the net9 for net8, net7 or net6 for the other versions.
MicaWPF:
<TargetFramework>net9.0-windows</TargetFramework>
<TargetPlatformMinVersion>7.0</TargetPlatformMinVersion>
MicaWPF.Lite:
<TargetFramework>net9.0-windows</TargetFramework>
For more examples, please refer to the Documentation
<!-- ROADMAP -->Roadmap
See the open issues for a list of proposed features (and known issues).
<!-- CONTRIBUTING -->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<br/> and a trim down accent color detection so it takes way less space.<br /> 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 -->
License
Distributed under the MIT License. See LICENSE for more information.
Contact
Simnico99 - @TheSimnico99
Project Link: https://github.com/Simnico99
<!-- ACKNOWLEDGEMENTS -->