In WPF, how do I darken all screen area when 开发者_如何学Copening a new window?
Also after the window is closed, how do I revert the temporary effect?
Here is my version, if you want gray out and blur the parent window:
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;
}
You may create a background transparent window like this:
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();
and replace MessageBox.Show("Hello");
with mywindow.ShowModal();
. Possibly, you'll need to make mywindow
always on top.
Edit
Don't use darkwindow.Hide() instead of Close().
Decrease the opacity of the current window,
For ex:
{
this.Opacity = 0.5;//Decrease opacity
MessageBox.Show("Ur Window Darken");
this.Opacity = 100;//Reset the opacity
}
easiest way:use XAML pop-up as described below
<Popup x:Name="pop" IsOpen="False" >
</Popup>
For more details visit below link. http://www.c-sharpcorner.com/UploadFile/mahesh/using-xaml-popup-in-wpf/
After this to blur the main grid on eventhandler for the event which shows the pop-up,set the opacity as shown in below C# code
if (pop.IsOpen == false)
{
pop.IsOpen = true;
grdMain.Opacity = 0.4;
}
else
{
pop.isopen=false;
}
精彩评论