Manages the appearance of the application.
        /// <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;
        }
Ejemplo n.º 2
0
        /// <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;
        }