Files
aistudio-wpf-diagram/Fluent.Ribbon/Fluent.Ribbon.Showcase/MahMetroWindow.xaml.cs
2021-07-23 09:42:22 +08:00

69 lines
2.4 KiB
C#

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>("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
/// <summary>
/// Gets ribbon titlebar
/// </summary>
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
/// <summary>Identifies the <see cref="TitleBar"/> dependency property.</summary>
public static readonly DependencyProperty TitleBarProperty = TitleBarPropertyKey.DependencyProperty;
#pragma warning restore WPF0060
#endregion
}
}