Modern WPF Themes (like Visual Studio 2012 or later).
C# Batchfile
Switch branches/tags
Nothing to show
Permalink
Failed to load latest commit information.
samples Minor changes. Feb 21, 2017
source Add value cache to WindowsThemeValue<T>. Feb 22, 2017
.gitignore Initial commit Nov 19, 2012
LICENSE.txt フォルダー整理 Jul 29, 2015
README.md Update documents. Jan 27, 2016

README.md

MetroRadiance

Build status NuGet Downloads License

UI control libraries for create WPF window like Visual Studio 2012/2013/2015.

ss150730085651kd

Installation

Install NuGet package(s).

PM> Install-Package MetroRadiance

Features / How to use

MetroRadiance.Core

  • DPI / Per-Monitor DPI support
    • Get system DPI
    • Get monitor DPI from HwndSource or window handle
using MetroRadiance.Interop;
// Get system dpi
var systemDpi = window.GetSystemDpi();

if (PerMonitorDpi.IsSupported)
{
    // Get monitor dpi.
    var hwndSource = (HwndSource)PresentationSource.FromVisual(this);
    var monitorDpi = hwndSource.GetDpi();
}
  • Windows theme support
    • Get Windows theme (Light or Dark, only Windows 10)
    • Get Windows accent color
    • Subscribe color change event from Windows
using MetroRadiance.Platform;
// Get Windows accent color
var color = WindowsTheme.GetAccentColor();

// Subscribe accent color change event from Windows theme.
var disposable = WindowsTheme.RegisterAccentColorListener(color =>
{
    // apply color to your app.
});

// Unsubscribe color change event.
disposable.Dispose();
  • HSV color model support
using MetroRadiance.Media;
// Get Windows accent color (using MetroRadiance.Platform;)
var rgbColor = WindowsTheme.GetAccentColor();

// Convert from RGB to HSV color.
var hsvColor = rgbColor.ToHsv();
hsvColor.V *= 0.8;

// Convert from HSV to RGB color.
var newColor = hsvColor.ToRgb();

MetroRadiance.Chrome

  • Add window chrome like Visual Studio to WPF Window
    • MetroRadiance.Chrome.WindowChrome
<Window xmlns:chrome="http://schemes.grabacr.net/winfx/2014/chrome">
    <chrome:WindowChrome.Instance>
        <chrome:WindowChrome />
    </chrome:WindowChrome.Instance>
</Window>
  • Add any UI elements to window chrome
    • MetroRadiance.Chrome.WindowChrome.Top / .Left / .Right / .Bottom
<Window xmlns:chrome="http://schemes.grabacr.net/winfx/2014/chrome">
    <chrome:WindowChrome.Instance>
        <chrome:WindowChrome>
            <chrome:WindowChrome.Top>
                <Border Background="DarkRed"
                        Padding="24,3"
                        Margin="8,0"
                        HorizontalAlignment="Right">
                    <TextBlock Text="any UI elements"
                               Foreground="White" />
                </Border>
            </chrome:WindowChrome.Top>
        </chrome:WindowChrome>
    </chrome:WindowChrome.Instance>
</Window>

ss160128005316ls

MetroRadiance

  • Theme support
// Change theme.
ThemeService.Current.ChangeTheme(Theme.Dark);

// Change theme (sync Windows)
ThemeService.Current.ChangeTheme(Theme.Windows);

// Change Accent
ThemeService.Current.ChangeAccent(Accent.Blue);

// Change accent (sync Windows)
ThemeService.Current.ChangeAccent(Accent.Windows);

// Change accent (from RGB Color)
var accent = Colors.Red.ToAccent();
ThemeService.Current.ChangeAccent(accent);
  • Custom controls
  • Custom behaviors
  • Custom converters

License

This library is under the MIT License (MIT).