namespace FluentTest { using System; using System.Windows; using ControlzEx.Theming; using Fluent; using MahApps.Metro.Controls; public partial class MahMetroWindow : MetroWindow, IRibbonWindow { public MahMetroWindow() { this.InitializeComponent(); this.TestContent.Backstage.UseHighestAvailableAdornerLayer = false; this.Loaded += this.MahMetroWindow_Loaded; this.Closed += this.MahMetroWindow_Closed; } private void MahMetroWindow_Loaded(object sender, RoutedEventArgs e) { this.TitleBar = this.FindChild("RibbonTitleBar"); this.TitleBar.InvalidateArrange(); this.TitleBar.UpdateLayout(); // We need this inside this window because MahApps.Metro is not loaded globally inside the Fluent.Ribbon Showcase application. // This code is not required in an application that loads the MahApps.Metro styles globally. ThemeManager.Current.ChangeTheme(this, ThemeManager.Current.DetectTheme(Application.Current)); ThemeManager.Current.ThemeChanged += this.SyncThemes; } private void SyncThemes(object sender, ThemeChangedEventArgs e) { if (e.Target == this) { return; } ThemeManager.Current.ChangeTheme(this, e.NewTheme); } private void MahMetroWindow_Closed(object sender, EventArgs e) { ThemeManager.Current.ThemeChanged -= this.SyncThemes; } #region TitelBar /// /// Gets ribbon titlebar /// public RibbonTitleBar TitleBar { get { return (RibbonTitleBar)this.GetValue(TitleBarProperty); } private set { this.SetValue(TitleBarPropertyKey, value); } } // ReSharper disable once InconsistentNaming private static readonly DependencyPropertyKey TitleBarPropertyKey = DependencyProperty.RegisterReadOnly(nameof(TitleBar), typeof(RibbonTitleBar), typeof(MahMetroWindow), new PropertyMetadata()); #pragma warning disable WPF0060 /// Identifies the dependency property. public static readonly DependencyProperty TitleBarProperty = TitleBarPropertyKey.DependencyProperty; #pragma warning restore WPF0060 #endregion } }