在WPF中,如何在打开新窗口时使所有屏幕区域变暗?
窗口关闭后,如何恢复临时效果?
答案 0 :(得分:19)
这是我的版本,如果你想要灰色并模糊父窗口:
private void btnOpenSettings_Click(object sender, RoutedEventArgs e)
{
// settings for the parent window
// set the transparency to the half
this.Opacity = 0.5;
// blur the whole window
this.Effect = new BlurEffect();
// Set the options for the settings (child) window
SettingsForm wdwSettings = new SettingsForm()
{
Owner = this,
ShowInTaskbar = false,
Topmost = true
};
// Open the child window
wdwSettings.ShowDialog();
//restore Opacity and remove blur after closing the child window
this.Opacity = 1;
this.Effect = null;
}
答案 1 :(得分:14)
您可以创建一个这样的背景透明窗口:
var darkwindow = new Window() {
Background = Brushes.Black,
Opacity = 0.4,
AllowsTransparency = true,
WindowStyle = WindowStyle.None,
WindowState = WindowState.Maximized,
Topmost = true
};
darkwindow.Show();
MessageBox.Show("Hello");
darkwindow.Close();
并将MessageBox.Show("Hello");
替换为mywindow.ShowModal();
。可能,您需要始终将mywindow
放在首位。
修改强>
不要使用darkwindow.Hide()而不是Close()。
答案 2 :(得分:6)
降低当前窗口的不透明度
例如:
{
this.Opacity = 0.5;//Decrease opacity
MessageBox.Show("Ur Window Darken");
this.Opacity = 100;//Reset the opacity
}
答案 3 :(得分:0)
最简单的方法:使用XAML弹出窗口,如下所述
<Popup x:Name="pop" IsOpen="False" >
</Popup>
有关详细信息,请访问以下链接。 http://www.c-sharpcorner.com/UploadFile/mahesh/using-xaml-popup-in-wpf/
在此之后模糊显示弹出窗口的事件的eventhandler上的主网格,设置不透明度,如下面的C#代码所示
if (pop.IsOpen == false)
{
pop.IsOpen = true;
grdMain.Opacity = 0.4;
}
else
{
pop.isopen=false;
}