private void EnableBlurIfApplicable() { if ((_viewModel.State == FlyoutViewModel.ViewState.Opening || _viewModel.State == FlyoutViewModel.ViewState.Open) && SystemSettings.IsTransparencyEnabled && !SystemParameters.HighContrast) { User32.AccentFlags location = User32.AccentFlags.None; switch (WindowsTaskbar.Current.Location) { case WindowsTaskbar.Position.Left: location = User32.AccentFlags.DrawRightBorder | User32.AccentFlags.DrawTopBorder; break; case WindowsTaskbar.Position.Right: location = User32.AccentFlags.DrawLeftBorder | User32.AccentFlags.DrawTopBorder; break; case WindowsTaskbar.Position.Top: location = User32.AccentFlags.DrawLeftBorder | User32.AccentFlags.DrawBottomBorder; break; case WindowsTaskbar.Position.Bottom: location = User32.AccentFlags.DrawTopBorder | User32.AccentFlags.DrawLeftBorder; break; } AccentPolicyLibrary.EnableAcrylic(this, Themes.Manager.Current.ResolveRef(this, "AcrylicColor_Flyout"), location); } else { DisableAcrylic(); } }
public static void EnableAcrylic(Visual target, Color color, User32.AccentFlags flags) { SetAccentPolicy(HandleFromVisual(target), new User32.AccentPolicy { AccentFlags = flags, AccentState = AccentPolicySupportsTintColor ? User32.AccentState.ACCENT_ENABLE_ACRYLICBLURBEHIND : User32.AccentState.ACCENT_ENABLE_BLURBEHIND, GradientColor = color.ToABGR(), }); }