WPF遮罩层实现
来源:互联网 发布:cocos2d 源码 编辑:程序博客网 时间:2024/06/03 15:54
废话不多说,直接上图:
上代码:
先搞一个基类,方便子窗体复用
public partial class BaseWindow : Window { public BaseWindow() : base() { this.Closed += Window_Closed; this.WindowStartupLocation = WindowStartupLocation.CenterOwner; this.ResizeMode = ResizeMode.NoResize; } public void SyncComplete() { this.Dispatcher.Invoke(() => { MessageBox.Show(this, "操作完成!", "提示"); }); } private void Window_Closed(object sender, EventArgs e) { //容器Grid Grid grid = this.Owner.Content as Grid; //父级窗体原来的内容 UIElement original = VisualTreeHelper.GetChild(grid, 0) as UIElement; //将父级窗体原来的内容在容器Grid中移除 grid.Children.Remove(original); //赋给父级窗体 this.Owner.Content = original; } public bool? ShowDialog(Window owner) { //蒙板 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; this.Owner = owner; return this.ShowDialog(); } }
子窗体实现:
XAML
<local:BaseWindow x:Class="Modules.wnd_TimeSync" 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:Modules" mc:Ignorable="d" WindowStyle="None" AllowsTransparency="True" Background="Transparent" Title="wnd_TimeSync" Height="20" Width="220" Closed="Window_Closed" > <StackPanel> <ProgressBar Name="pb" Height="20" Width="200" Maximum="100"></ProgressBar> </StackPanel></local:BaseWindow>
cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Shapes;namespace Modules{ /// <summary> /// wnd_TimeSync.xaml 的交互逻辑 /// </summary> public partial class wnd_TimeSync : BaseWindow { public wnd_TimeSync() { InitializeComponent(); } public static void ShowDialog(Window owner) { //弹出消息框 wnd_TimeSync box = new wnd_TimeSync(); box.ShowDialog(owner); } }}
阅读全文
0 0
- WPF遮罩层实现
- wpf智能客户端实现
- WPF多线程的实现
- WPF中实现进度条
- WPF 实现水纹效果
- WPF实现下雪效果 ...
- WPF实现DoEvents
- wpf 实现childwindow
- WPF实现Themes切换
- WPF拖放功能实现
- WPF拖放功能实现
- WPF实现科拖拽分隔栏
- WPF拖放功能实现
- WPF 实现label换行
- WPF实现DoEvents
- WPF实现毛玻璃效果
- WPF NotifyIcon 实现例子
- wpf 实现ItemsContro
- 汇编-寄存器
- 基于opencv的单张图像去雾算法(三)
- 彻底理解 Android Binder 通信架构
- UVA
- 函数的可重入与线程安全
- WPF遮罩层实现
- 图论(2017NOIP复习)
- Anaconda开发Python安装使用3.6.3
- 先序、中序和后序数组两两结合重构二叉树
- docker使用
- DOS命令常用
- ArrayList、LinkedList、HashMap的底层实现
- 数组排序
- 信号处理学习笔记(二)Decimation信号抽取