You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinUI3中修改ContentDialog弹出时父窗口遮罩透明度的问题

解决WinUI 3中ContentDialog遮罩透明度修改问题

WinUI 3里ContentDialog的遮罩背景已不再使用ContentDialogDimmingThemeBrush这类旧资源,而是通过ContentDialogLightDismissOverlayBackground全局控制,或直接设置对话框的OverlayBackground属性自定义。以下是两种有效方案:

全局修改所有ContentDialog的遮罩透明度

在App.xaml的资源字典中,针对不同主题定义ContentDialogLightDismissOverlayBackground资源,注意使用ARGB格式设置透明度(前两位十六进制值控制透明度,00为完全透明,FF为完全不透明):

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls"/>
        </ResourceDictionary.MergedDictionaries>

        <ResourceDictionary.ThemeDictionaries>
            <!-- 浅色主题下的遮罩:50%透明度的黑色 -->
            <ResourceDictionary x:Key="Default">
                <SolidColorBrush x:Key="ContentDialogLightDismissOverlayBackground" Color="#80000000"/>
            </ResourceDictionary>
            <!-- 深色主题下的遮罩:40%透明度的白色 -->
            <ResourceDictionary x:Key="Dark">
                <SolidColorBrush x:Key="ContentDialogLightDismissOverlayBackground" Color="#66FFFFFF"/>
            </ResourceDictionary>
        </ResourceDictionary.ThemeDictionaries>
    </ResourceDictionary>
</Application.Resources>

单个ContentDialog自定义遮罩透明度

无需全局修改,直接为目标对话框设置OverlayBackground属性即可:

XAML方式

<ContentDialog x:Name="CustomDialog" OverlayBackground="#A0000000">
    <StackPanel>
        <TextBlock Text="自定义遮罩透明度的对话框"/>
        <Button Content="确认" Click="ConfirmButton_Click"/>
    </StackPanel>
</ContentDialog>

代码后台方式

// 设置遮罩为60%透明度的黑色
CustomDialog.OverlayBackground = new SolidColorBrush(Color.FromArgb(0xA0, 0, 0, 0));

内容的提问来源于stack exchange,提问作者kinton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 12:07:23