This is a library to make Mica available in WPF.
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
Table of Contents
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 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.
- 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
- 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.
(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 .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.
- 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
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