Как затемнить всю область экрана и засветить открытое окно в WPF? - PullRequest
9 голосов
/ 23 декабря 2010

Как в WPF затемнять всю область экрана при открытии нового окна?

Также после закрытия окна, как отменить временный эффект?

Ответы [ 4 ]

19 голосов
/ 03 февраля 2013

Вот моя версия, если вы хотите сделать серым и размыть родительское окно:

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;
    }
14 голосов
/ 24 декабря 2010

Вы можете создать прозрачное фоновое окно следующим образом:

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 всегда сверху.

Edit

Не используйте darkwindow.Hide () вместо Close ().

6 голосов
/ 14 июня 2017

Уменьшить непрозрачность текущего окна,

Например:

{
    this.Opacity = 0.5;//Decrease opacity
    MessageBox.Show("Ur Window Darken");
    this.Opacity = 100;//Reset the opacity
}
0 голосов
/ 13 марта 2015

самый простой способ : используйте всплывающее окно XAML, как описано ниже

<Popup x:Name="pop" IsOpen="False" >

</Popup> 

Для получения более подробной информации перейдите по ссылке ниже.http://www.c -sharpcorner.com / UploadFile / mahesh / using-xaml-popup-in-wpf /

После этого размыть основную сетку на обработчике событий для события, показывающего всплывающее окно.установите непрозрачность, как показано ниже C # code

if (pop.IsOpen == false)    
{    
pop.IsOpen = true;    
grdMain.Opacity = 0.4;    
}    
else    
{    
pop.isopen=false;    
}    
...