除了customdialogbox之外,如何使一切不透明度= 0.5

时间:2016-01-26 03:05:37

标签: wpf

我是WPF的新手,我在WPF中创建了一个自定义对话框(或消息框)。

我的问题是我无法将自定义对话框后面的所有内容更改为Opacity = 0.5。只有调用自定义对话框的表单..

我只想在Windows 8.1中显示我的对话框

任何事情都会受到高度赞赏。

TIA!

2 个答案:

答案 0 :(得分:0)

MainWindow中设置一个属性,用于控制Opacity的{​​{1}}。这将在显示对话框时更改应用程序的不透明度。

示例代码:

LayoutRoot

<Grid Name="LayoutRoot" Opacity="{Binding MainWindowOpacity}">
    <StackPanel>
        <Button Click="Button_Click" Content="Click Me to Show Dialog"/>
        <TextBlock Text="WPF" FontSize="72" Margin="50" Foreground="Orange" HorizontalAlignment="Center"/>
    </StackPanel>
</Grid>

结果:

WPF Modal Dialog with App Opacity Property

答案 1 :(得分:0)

您可以像这样向App.xaml添加静态方法:

    public partial class App : Application
{

    public static void SetWindowsToOpacity(double dOpacity, Window ignoreWindow)
    {
        foreach (Window win in System.Windows.Application.Current.Windows)
        {
            if (win != ignoreWindow)
            {
                win.Opacity = dOpacity;
            }

        }
    }
}

在“对话框”窗口中传递您不希望设置为较低的不透明度和所有其余部分的不透明度值。

调用这样的方法:

        private void button_Click(object sender, RoutedEventArgs e)
    {
        Window1 dialog = new Window1();
        App.SetWindowsToOpacity(0.5, dialog);
        dialog.ShowDialog();
        App.SetWindowsToOpacity(1.0, null);
    }