wpf 打开与关闭 带蒙板 的子窗体,

先上效果图:

相关添加蒙板后台代码如下:

 /// <summary>
        /// 显示子窗体
        /// </summary>
        /// <param name="obj">父窗体</param>
        /// <param name="showWindow">子窗体</param>
        private void ShowWindow(object obj, Window showWindow)
        {
            Window owner = null;
            if (obj is Window)
            {
                owner = obj as Window;
            }
            //蒙板
            Grid layer = new Grid() { Background = new SolidColorBrush(Color.FromArgb(128, 0, 0, 0)) };
            //父级窗体原来的内容
            UIElement original = owner.Content as UIElement;
            owner.Content = null;
            //容器Grid
            Grid container = new Grid();
            container.Children.Add(original);//放入原来的内容
            container.Children.Add(layer);//在上面放一层蒙板
            //将装有原来内容和蒙板的容器赋给父级窗体
            owner.Content = container;
            //弹出消息框 
            showWindow.Owner = owner; 
            showWindow.ShowDialog();
        }

退出时蒙板关闭子窗体关闭如下:

 /// <summary>
        /// 关闭窗口
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnClose_Click(object sender, RoutedEventArgs e)
        {
            Grid grid = this.Owner.Content as Grid;
            //父级窗体原来的内容
            UIElement original = VisualTreeHelper.GetChild(grid, 0) as UIElement;
            //将父级窗体原来的内容在容器Grid中移除
            grid.Children.Remove(original);
            //赋给父级窗体
            this.Owner.Content = original;
            this.Close();
        }        

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章