Skip to content

Commit

Permalink
Add backdrop for MessageBox
Browse files Browse the repository at this point in the history
  • Loading branch information
NotYoojun committed Dec 25, 2023
1 parent 442cb4f commit fdb8ed3
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Interop;
using System.Windows.Media;
using static iNKORE.UI.WPF.Modern.Controls.LocalizedDialogCommands;

namespace iNKORE.UI.WPF.Modern.Controls
Expand All @@ -27,10 +28,11 @@ public MessageBoxResult Result



private Button OKButton { get; set; }
private Button YesButton { get; set; }
private Button NoButton { get; set; }
private Button CancelButton { get; set; }
public Button OKButton { get; private set; }
public Button YesButton { get; private set; }
public Button NoButton { get; private set; }
public Button CancelButton { get; private set; }
public Border Border_UpperBackground { get; private set; }

public static BackdropType DefaultBackdropType { get; set; } = BackdropType.None;

Expand All @@ -39,13 +41,36 @@ static MessageBox()
DefaultStyleKeyProperty.OverrideMetadata(typeof(MessageBox), new FrameworkPropertyMetadata(typeof(MessageBox)));
}

public static readonly DependencyPropertyDescriptor SystemBackdropTypeProperty_Descriptor = DependencyPropertyDescriptor.FromProperty(WindowHelper.SystemBackdropTypeProperty, typeof(MessageBox));

public MessageBox()
{
SetValue(TemplateSettingsPropertyKey, new MessageBoxTemplateSettings());
var handler = new RoutedEventHandler((sender, e) => ApplyDarkMode());
ThemeManager.AddActualThemeChangedHandler(this, handler);

Loaded += On_Loaded;

SystemBackdropTypeProperty_Descriptor.AddValueChanged(this, SystemBackdropTypeProperty_ValueChanged);
}

private void SystemBackdropTypeProperty_ValueChanged(object sender, EventArgs e)
{
var backdrop = WindowHelper.GetSystemBackdropType(this);

if(this.ReadLocalValue(BackgroundProperty) == DependencyProperty.UnsetValue)
{
if (backdrop == BackdropType.None || !backdrop.IsSupported())
{
this.SetResourceReference(BackgroundProperty, ThemeKeys.ContentDialogBackgroundKey);
Border_UpperBackground?.SetResourceReference(BackgroundProperty, ThemeKeys.ContentDialogTopOverlayKey);
}
else
{
this.Background = Brushes.Transparent;
Border_UpperBackground?.SetResourceReference(BackgroundProperty, ThemeKeys.LayerOnAcrylicFillColorDefaultBrushKey);
}
}
}

#region Caption
Expand Down Expand Up @@ -449,9 +474,9 @@ public MessageBoxTemplateSettings TemplateSettings

public event TypedEventHandler<MessageBox, MessageBoxOpenedEventArgs> Opened;

public event TypedEventHandler<MessageBox, MessageBoxClosingEventArgs> Closing;
public new event TypedEventHandler<MessageBox, MessageBoxClosingEventArgs> Closing;

public event TypedEventHandler<MessageBox, MessageBoxClosedEventArgs> Closed;
public new event TypedEventHandler<MessageBox, MessageBoxClosedEventArgs> Closed;

public event TypedEventHandler<MessageBox, MessageBoxButtonClickEventArgs> OKButtonClick;

Expand Down Expand Up @@ -507,6 +532,7 @@ public override void OnApplyTemplate()
YesButton = GetTemplateChild(nameof(YesButton)) as Button;
NoButton = GetTemplateChild(nameof(NoButton)) as Button;
CancelButton = GetTemplateChild(nameof(CancelButton)) as Button;
Border_UpperBackground = GetTemplateChild(nameof(Border_UpperBackground)) as Border;

if (OKButton != null)
{
Expand Down Expand Up @@ -760,6 +786,8 @@ private void On_Loaded(object sender, RoutedEventArgs e)
{
WindowHelper.SetSystemBackdropType(this, DefaultBackdropType);
}

SystemBackdropTypeProperty_ValueChanged(sender, e);
}

private static void TryExecuteCommand(ICommand command, object parameter)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -284,9 +284,9 @@
<Setter TargetName="CancelButton" Property="Style" Value="{DynamicResource AccentButtonStyle}" />
</Trigger>

<Trigger Property="ui:WindowHelper.SystemBackdropType" Value="None">
<!--<Trigger Property="ui:WindowHelper.SystemBackdropType" Value="None">
<Setter TargetName="Border_UpperBackground" Property="Background" Value="{DynamicResource ContentDialogTopOverlay}"/>
</Trigger>
</Trigger>-->

</ControlTemplate.Triggers>
</ControlTemplate>
Expand All @@ -296,9 +296,9 @@
<!--<Trigger Property="ui:WindowHelper.SystemBackdropType" Value="Acrylic">
<Setter Property="WindowChrome.WindowChrome" Value="{DynamicResource AcrylicWindowChrome}"/>
</Trigger>-->
<Trigger Property="ui:WindowHelper.SystemBackdropType" Value="None">
<!--<Trigger Property="ui:WindowHelper.SystemBackdropType" Value="None">
<Setter Property="Background" Value="{DynamicResource ContentDialogBackground}"/>
</Trigger>
</Trigger>-->
</Style.Triggers>
</Style>

Expand Down
2 changes: 1 addition & 1 deletion source/iNKORE.UI.WPF.Modern/Helpers/ColorsHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

namespace iNKORE.UI.WPF.Modern.Helpers
{
internal class ColorsHelper : DispatcherObject
public class ColorsHelper : DispatcherObject
{
private const string AccentKey = "SystemAccentColor";
private const string AccentDark1Key = "SystemAccentColorDark1";
Expand Down
2 changes: 1 addition & 1 deletion source/samples/WpfApp1/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
ui:TitleBar.ExtendViewIntoTitleBar="False" ui:WindowHelper.SystemBackdropType="Acrylic"
ui:WindowHelper.UseModernWindowStyle="True"
ui:TitleBar.IsBackButtonVisible="False" ui:ThemeManager.RequestedTheme="Light"
ui:WindowHelper.CornerStyle="DoNotRound" Background="{x:Null}" Loaded="Window_Loaded">
ui:WindowHelper.CornerStyle="DoNotRound" Background="Red" Loaded="Window_Loaded">
<Canvas>
<ComboBox SelectionChanged="ComboBox_SelectionChanged" Height="35" IsEditable="True">
<ComboBoxItem Content="Item1"/>
Expand Down

0 comments on commit fdb8ed3

Please sign in to comment.