diff --git a/ModernFlyouts/Controls/AirplaneModeControl.xaml b/ModernFlyouts/Controls/AirplaneModeControl.xaml index bd884a12..c34c1490 100644 --- a/ModernFlyouts/Controls/AirplaneModeControl.xaml +++ b/ModernFlyouts/Controls/AirplaneModeControl.xaml @@ -12,8 +12,8 @@ Height="64" d:DesignWidth="354" DataContext="{x:Static root:FlyoutHandler.Instance}"> - + Orientation="Horizontal" HorizontalAlignment="Center" Name="MainStackPanel"> + @@ -27,13 +27,13 @@ + Margin="20" d:Text="{x:Static resx:Strings.AirplaneMode_NotAvailable}" Name="AirplaneStatusText"> - + + TrueValue="{x:Static resx:Strings.AirplaneModeOn}" + FalseValue="{x:Static resx:Strings.AirplaneModeOff}" /> diff --git a/ModernFlyouts/Controls/AirplaneModeControl.xaml.cs b/ModernFlyouts/Controls/AirplaneModeControl.xaml.cs index 86c2686c..5d6c2438 100644 --- a/ModernFlyouts/Controls/AirplaneModeControl.xaml.cs +++ b/ModernFlyouts/Controls/AirplaneModeControl.xaml.cs @@ -1,4 +1,7 @@ -using System.Windows.Controls; +using ModernWpf.Controls; +using System.ComponentModel; +using System.Windows.Controls; +using System.Windows.Data; namespace ModernFlyouts.Controls { @@ -8,5 +11,10 @@ public AirplaneModeControl() { InitializeComponent(); } + + public void InvalidateProperties() + { + BindingOperations.GetBindingExpression(MainStackPanel, StackPanel.DataContextProperty).UpdateTarget(); + } } } diff --git a/ModernFlyouts/Controls/LockKeysControl.xaml b/ModernFlyouts/Controls/LockKeysControl.xaml index bbb3ebf2..b7a33b8e 100644 --- a/ModernFlyouts/Controls/LockKeysControl.xaml +++ b/ModernFlyouts/Controls/LockKeysControl.xaml @@ -10,11 +10,11 @@ + d:Glyph="{x:Static utils:CommonGlyphs.Lock}" FontSize="24" Name="LockStatusGlyph" /> + d:Text="Lock key is on" Name="LockStatusText" /> diff --git a/ModernFlyouts/Controls/LockKeysControl.xaml.cs b/ModernFlyouts/Controls/LockKeysControl.xaml.cs index 0fbfee1c..976041f0 100644 --- a/ModernFlyouts/Controls/LockKeysControl.xaml.cs +++ b/ModernFlyouts/Controls/LockKeysControl.xaml.cs @@ -1,4 +1,6 @@ -using System.Windows.Controls; +using ModernWpf.Controls; +using System.Windows.Controls; +using System.Windows.Data; namespace ModernFlyouts.Controls { @@ -8,5 +10,11 @@ public LockKeysControl() { InitializeComponent(); } + + public void InvalidateProperties() + { + BindingOperations.GetBindingExpression(LockStatusText, TextBlock.TextProperty).UpdateTarget(); + BindingOperations.GetBindingExpression(LockStatusGlyph, FontIcon.GlyphProperty).UpdateTarget(); + } } } diff --git a/ModernFlyouts/Flyout Helpers/AirplaneModeFlyoutHelper.cs b/ModernFlyouts/Flyout Helpers/AirplaneModeFlyoutHelper.cs index a95954c5..6b0d0571 100644 --- a/ModernFlyouts/Flyout Helpers/AirplaneModeFlyoutHelper.cs +++ b/ModernFlyouts/Flyout Helpers/AirplaneModeFlyoutHelper.cs @@ -14,7 +14,11 @@ public class AirplaneModeFlyoutHelper : FlyoutHelperBase public bool AirplaneMode { get => airplaneMode; - private set => SetProperty(ref airplaneMode, value); + private set + { + SetProperty(ref airplaneMode, value); + airplaneModeControl.InvalidateProperties(); + } } #endregion diff --git a/ModernFlyouts/Flyout Helpers/LockKeysFlyoutHelper.cs b/ModernFlyouts/Flyout Helpers/LockKeysFlyoutHelper.cs index c5c2b890..2a57f12d 100644 --- a/ModernFlyouts/Flyout Helpers/LockKeysFlyoutHelper.cs +++ b/ModernFlyouts/Flyout Helpers/LockKeysFlyoutHelper.cs @@ -16,7 +16,11 @@ public class LockKeysFlyoutHelper : FlyoutHelperBase public string StatusGlyph { get => statusGlyph; - private set => SetProperty(ref statusGlyph, value); + private set + { + SetProperty(ref statusGlyph, value); + lockKeysControl.InvalidateProperties(); + } } private string statusText = string.Empty; diff --git a/ModernFlyouts/FlyoutHandler.cs b/ModernFlyouts/FlyoutHandler.cs index 5c83771a..2dfff3c7 100644 --- a/ModernFlyouts/FlyoutHandler.cs +++ b/ModernFlyouts/FlyoutHandler.cs @@ -218,13 +218,17 @@ private void AirplaneModeWatcher_Changed(object sender, AirplaneModeChangedEvent private void Instance_DisplayUpdated(object sender, EventArgs e) { - if (!DisplayManager.Instance.DisplayMonitors.Any(x => x == onScreenFlyoutPreferredMonitor)) - { - _savePreferredMonitor = false; + _savePreferredMonitor = false; + var preferred_monitor = AppDataHelper.PreferredDisplayMonitorId; + var monitors = DisplayManager.Instance.DisplayMonitors + .Where(x => x.DeviceId == preferred_monitor) + .Select(x => x); + if (!monitors.Any()) OnScreenFlyoutPreferredMonitor = DisplayManager.Instance.PrimaryDisplayMonitor; - AlignFlyout(); - _savePreferredMonitor = true; - } + else + OnScreenFlyoutPreferredMonitor = monitors.First(); + AlignFlyout(); + _savePreferredMonitor = true; } private void CreateOnScreenFlyoutWindow()