using Common.Wpf.Extensions; using System.Linq; using System.Windows.Media; namespace FloatingStatusWindowLibrary { internal partial class AppearanceWindow { private WindowSettings _currentSettings; private readonly WindowSettings _originalSettings; public AppearanceWindow(WindowSettings windowSettings) { InitializeComponent(); _currentSettings = windowSettings; _originalSettings = (WindowSettings) _currentSettings.Clone(); var allFonts = Fonts.SystemFontFamilies.OrderBy(x => x.Source); var filteredFonts = allFonts.Where(f => FontExtensions.IsComposite(f) || (!FontExtensions.IsSymbol(f) && FontExtensions.IsVisible(f))); FontNameCombo.ItemsSource = filteredFonts; DataContext = _currentSettings; } private void HandleOkayButtonClick(object sender, System.Windows.RoutedEventArgs e) { DialogResult = true; Close(); } private void HandleWindowSourceUpdated(object sender, System.Windows.Data.DataTransferEventArgs e) { _currentSettings.Apply(); } private void HandleWindowClosing(object sender, System.ComponentModel.CancelEventArgs e) { if (DialogResult == true) return; _currentSettings = _originalSettings; _currentSettings.Apply(); } } }