2017-10-04 76 views
-1

私のWPFアプリケーションでこの機能を実装したいと思います。ポップアップウィンドウ(子ウィンドウ)が表示されるように、画面全体(親ウィンドウ)に黒いオーバーレイ/バックグラウンドのようになりたいので、ポップアップウィンドウ(子ウィンドウ)の可視性を下げるようにします。ブラウザのポップアップウィンドウです。次に、ポップアップウィンドウ(子ウィンドウ)が閉じられると、暗いオーバーレイ/背景が削除されます。 enter image description here子ウィンドウがwpfでポップアップするときに親ウィンドウをぼかす方法

+0

これは私のために完全に働きました。 'ウィンドウdarkwindow =新しいウィンドウ(){ 背景= Brushes.Black、 不透明度= 0.8、 AllowsTransparency =真、 のWindowStyle = WindowStyle.None、 のWindowState = WindowState.Maximized、 最上位=真 }。 darkwindow.Show(); un.ShowDialog(); darkwindow.Close(); ' –

答えて

1

あなたのダイアログを起動する前に、親ウィンドウのエフェクトプロパティを変更:

parentWindow.Effect = new BlurEffect(); 

ダイアログが閉じたとき:

parentWindow.Effect = null; 

オーバーレイに色を追加するために、あなたはで仕事ができますレイヤー(簡単にするために、コードビハインドメソッドを使用していますが、時間がある場合はMVVM /ビヘイビアに進みます):

XAML:

<Window x:Class="WpfApp3.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:WpfApp3" 
    mc:Ignorable="d" 
    Title="MainWindow" Height="350" Width="525"> 
<Grid x:Name="Grid"> 
    <Grid Margin="20"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"></RowDefinition> 
      <RowDefinition Height="Auto"></RowDefinition> 
      <RowDefinition Height="Auto"></RowDefinition> 
      <RowDefinition Height="*"></RowDefinition> 
     </Grid.RowDefinitions> 
     <Label>Label</Label> 
     <TextBox Grid.Row="1"></TextBox> 
     <Button Click="ButtonBase_OnClick">Click</Button> 
    </Grid> 
    <Border x:Name="Splash" Grid.RowSpan="4" Opacity=".2" Visibility="Collapsed" Background="Black"> 
    </Border> 
</Grid> 
</Window> 

コード:

using System.Windows; 
using System.Windows.Media.Effects; 

namespace WpfApp3 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     private void ButtonBase_OnClick(object sender, RoutedEventArgs e) 
     { 
      Grid.Effect = new BlurEffect(); 
      Splash.Visibility = Visibility.Visible; 

      var dlg = new Window(); 

      dlg.ShowDialog(); 

      Splash.Visibility = Visibility.Collapsed; 
      Grid.Effect = null; 
     } 
    } 
} 
+0

応答に感謝します。私はぼかしに色を加えることができる方法はありますか?それは単に要素をぼかします。 –

+0

色付きレイヤリングを表示するようにサンプルを更新しました。 – Eric

関連する問題