public static void SetApplyMode(FrameworkElement element, ImplicitStylesApplyMode value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(ApplyModeProperty, value); }
/// <summary> /// ApplyModeProperty property changed handler. /// </summary> /// <param name="dependencyObject">FrameworkElement that changed its /// ApplyMode.</param> /// <param name="eventArgs">Event arguments.</param> private static void OnApplyModePropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs eventArgs) { FrameworkElement element = dependencyObject as FrameworkElement; if (element == null) { throw new ArgumentNullException("dependencyObject"); } ImplicitStylesApplyMode oldMode = (ImplicitStylesApplyMode)eventArgs.OldValue; ImplicitStylesApplyMode newMode = (ImplicitStylesApplyMode)eventArgs.NewValue; ImplicitStyleManager.SetHasBeenStyled(element, false); EventHandler eventHandler = ImplicitStyleManager.GetLayoutUpdatedHandler(element); // If element is automatically styled (once or always) attach event // handler. if ((newMode == ImplicitStylesApplyMode.Auto || newMode == ImplicitStylesApplyMode.OneTime) && oldMode == ImplicitStylesApplyMode.None) { if (eventHandler == null) { eventHandler = (sender, args) => { ImplicitStyleManager.PropagateStyles(element, false); }; ImplicitStyleManager.SetLayoutUpdatedHandler(element, eventHandler); element.LayoutUpdated += eventHandler; } } else if ((oldMode == ImplicitStylesApplyMode.Auto || oldMode == ImplicitStylesApplyMode.OneTime) && newMode == ImplicitStylesApplyMode.None) { if (eventHandler != null) { element.LayoutUpdated -= eventHandler; ImplicitStyleManager.SetLayoutUpdatedHandler(element, null); } } }
/// <summary> /// Initializes a new instance of the Theme class. /// </summary> private Theme() { // Default the ApplyMode to OneTime ApplyMode = ImplicitStylesApplyMode.OneTime; }