C# 使子控件比父控件更不透明

C# 使子控件比父控件更不透明,c#,microsoft-metro,winrt-xaml,C#,Microsoft Metro,Winrt Xaml,我有一个类似于Xaml的页面,下面我想使用它作为ModalDialog 问题是,当我弹出对话框时,保存内容的第二个网格的不透明度没有变回100%,我从弹出对话框的页面看到了底层控件。有关更多详细信息,请参见屏幕截图 有没有一种方法可以将第二个网格的不透明度改回100%,这样后面的控件就看不透了 为了完整性,我添加了用于弹出窗口的代码 ModalDialog Xaml: <Page> <Grid x:Name="RootPanel" Background="{Static

我有一个类似于Xaml的页面,下面我想使用它作为ModalDialog

问题是,当我弹出对话框时,保存内容的第二个网格的不透明度没有变回100%,我从弹出对话框的页面看到了底层控件。有关更多详细信息,请参见屏幕截图

有没有一种方法可以将第二个网格的不透明度改回100%,这样后面的控件就看不透了

为了完整性,我添加了用于弹出窗口的代码

ModalDialog Xaml:

<Page>
    <Grid x:Name="RootPanel" Background="{StaticResource LucentBlue}" Opacity=".75">
         <Border >
              <Grid VerticalAlignment="Center"
                   Height="300" Background="{StaticResource PremiumBlue}" Opacity="1">

              </Grid>
         </Border>
    </Grid>
</Page>
private Popup _saveDialog;
private void SaveSettingsCommandLogic(object obj)
{
    ModalDialog dlg = new ModalDialog();
    dlg.CloseRequested += DlgOnCloseRequested;
    _saveDialog = new Popup();
    _saveDialog.Child = dlg;
    _saveDialog.IsOpen = true;
}

在metro中有一个解决方案:

请删除元素的
Opacity
属性,并从ModalDialog类的代码隐藏中使用以下代码:

    public ModalDialog()
    {
        this.InitializeComponent();
        Color color = Color.FromArgb(150,255,0,0);
        RootPanel.Background = new SolidColorBrush(color);
    }

argb中的方法
用于分别指定透明度的红-绿和蓝值,并且可以在0-255之间变化。。请根据您的便利性进行测试:)

U还可以在argb格式的xaml中设置背景属性,即:BackGround=“#AARRGGBB”,其中AA->的范围为0->99,RRGGBB为十六进制颜色代码。