private void AttachHandlers(Flyout item) { var isOpenChanged = DependencyPropertyDescriptor.FromProperty(Flyout.IsOpenProperty, typeof(Flyout)); var themeChanged = DependencyPropertyDescriptor.FromProperty(Flyout.ThemeProperty, typeof(Flyout)); isOpenChanged.AddValueChanged(item, this.FlyoutStatusChanged); themeChanged.AddValueChanged(item, this.FlyoutStatusChanged); }
private static Tuple<AppTheme, Accent> DetectTheme(Flyout flyout) { if (flyout == null) return null; // first look for owner var window = flyout.TryFindParent<MetroWindow>(); var theme = window != null ? ThemeManager.DetectAppStyle(window) : null; if (theme != null && theme.Item2 != null) return theme; // second try, look for main window if (Application.Current != null) { var mainWindow = Application.Current.MainWindow as MetroWindow; theme = mainWindow != null ? ThemeManager.DetectAppStyle(mainWindow) : null; if (theme != null && theme.Item2 != null) return theme; // oh no, now look at application resource theme = ThemeManager.DetectAppStyle(Application.Current); if (theme != null && theme.Item2 != null) return theme; } return null; }
private void ReorderZIndices(Flyout lastChanged) { var openFlyouts = this.GetFlyouts(this.Items).Where(i => i.IsOpen && i != lastChanged).OrderBy(Panel.GetZIndex); var index = 0; foreach (var openFlyout in openFlyouts) { Panel.SetZIndex(openFlyout, index); index++; } if (lastChanged.IsOpen) { Panel.SetZIndex(lastChanged, index); } }