• Stars
    star
    337
  • Rank 125,272 (Top 3 %)
  • Language
    C#
  • License
    MIT License
  • Created about 12 years ago
  • Updated about 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Modern WPF Themes (like Visual Studio 2012 or later).

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).