/// <summary> /// Registers an event sink for <see cref="AppearanceManager"/> to weakly handle its events. /// </summary> /// <param name="manager"></param> /// <param name="eventSink"></param> public static void RegisterEventSink(this AppearanceManager manager, IAppearanceManagerEventSink eventSink) { if (manager == null) { throw new ArgumentNullException(nameof(manager)); } if (eventSink == null) { throw new ArgumentNullException(nameof(eventSink)); } AppearanceManager.AccentColorChanged += new WeakEventHandler <IAppearanceManagerEventSink, object, object, EventArgs>(eventSink) { Handle = (t, o, e) => t.OnAccentColorChanged(o, e), Detach = (h, m) => AppearanceManager.AccentColorChanged -= h.OnEvent }.OnEvent; AppearanceManager.SystemAccentColorChanged += new WeakEventHandler <IAppearanceManagerEventSink, object, object, EventArgs>(eventSink) { Handle = (t, o, e) => t.OnSystemAccentColorChanged(o, e), Detach = (h, m) => AppearanceManager.SystemAccentColorChanged -= h.OnEvent }.OnEvent; manager.ThemeChanged += new WeakEventHandler <IAppearanceManagerEventSink, AppearanceManager, object, EventArgs>(eventSink) { Handle = (t, o, e) => t.OnThemeChanged(o, e), Detach = (h, m) => m.ThemeChanged -= h.OnEvent }.OnEvent; }
/// <summary> /// Gets the appearance manager for the current window (app view). /// </summary> /// <returns></returns> public static AppearanceManager GetForCurrentView() { var root = Window.Current?.Content?.GetAncestorsAndSelf().OfType <FrameworkElement>().Last(); if (root == null) { return(null); } var manager = (AppearanceManager)root.GetValue(AppearanceManagerProperty); if (manager == null) { manager = new AppearanceManager(root); root.SetValue(AppearanceManagerProperty, manager); } return(manager); }
/// <summary> /// Gets the appearance manager for the current window (app view). /// </summary> /// <returns></returns> public static AppearanceManager GetForCurrentView() { var root = Window.Current?.Content?.GetAncestorsAndSelf().OfType<FrameworkElement>().Last(); if (root == null) { return null; } var manager = (AppearanceManager)root.GetValue(AppearanceManagerProperty); if (manager == null) { manager = new AppearanceManager(root); root.SetValue(AppearanceManagerProperty, manager); } return manager; }