diff --git a/src/Wpf.Ui/Controls/TitleBar/TitleBar.cs b/src/Wpf.Ui/Controls/TitleBar/TitleBar.cs index 22e4dee0d..f65a33aa7 100644 --- a/src/Wpf.Ui/Controls/TitleBar/TitleBar.cs +++ b/src/Wpf.Ui/Controls/TitleBar/TitleBar.cs @@ -415,7 +415,7 @@ public event TypedEventHandler HelpClicked /// public Action? MinimizeActionOverride { get; set; } - private readonly TitleBarButton[] _buttons = new TitleBarButton[4]; + private readonly TitleBarButton?[] _buttons = new TitleBarButton[4]; private readonly TextBlock _titleBlock; private System.Windows.Window _currentWindow = null!; @@ -674,17 +674,18 @@ or PInvoke.WM_NCLBUTTONUP return IntPtr.Zero; } - foreach (TitleBarButton button in _buttons) + foreach (TitleBarButton? button in _buttons) { - if (!button.ReactToHwndHook(message, lParam, out IntPtr returnIntPtr)) + // Check if button is null to avoid potential NullReferenceException if OnApplyTemplate hasn't been called yet, e.g. when TitleBar has Visibility == Collapsed. + if (button is null || !button.ReactToHwndHook(message, lParam, out IntPtr returnIntPtr)) { continue; } // Fix for when sometimes, button hover backgrounds aren't cleared correctly, causing multiple buttons to appear as if hovered. - foreach (TitleBarButton anotherButton in _buttons) + foreach (TitleBarButton? anotherButton in _buttons) { - if (anotherButton == button) + if (anotherButton is null || anotherButton == button) { continue; }