方便自己以后用,原文:https://blog.csdn.net/lwwl12/article/details/78472235

直接上代码

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, ) 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(, , , )) };
//父级窗体原来的内容
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>

使用方法

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);
}
}
}

最新文章

  1. nodejs学习之加密
  2. samba server install
  3. 使用AStyle进行代码格式化
  4. iOS-RegexKitLite导入错误
  5. Effective Java 36 Consistently use the Override annotation
  6. 【bzoj1211】 HNOI2004—树的计数
  7. js 获取选中的多选框
  8. Centos搭建openvpn+mysql数据库认证
  9. Myeclipse2014 自带的报表功能 与 Eclipse BIRT
  10. poj - 3683 - Priest John&#39;s Busiest Day(2-SAT)
  11. sql获取exec(&#39;&#39;)的返回值
  12. linux安装rzsz
  13. [译]GotW #2: Temporary Objects
  14. Python按行读文件对比
  15. HTML5 CSS3 精美案例 : 达到VCD盒个性幻灯片
  16. MFC映射
  17. 如何将自己的Image镜像Push到Docker Hub
  18. maven超级pom内容
  19. R 语言 相关入门资料
  20. 算法笔记_172:历届试题 波动数列(Java)

热门文章

  1. 阿里云对象存储OSS支持版本管理特性
  2. hdu4325 线段树 成段更新
  3. 笔记: CC2540 和 CC2541 的区别
  4. MacOS代理设置(桌面应用代理设置&amp;Terminal代理设置)
  5. FZU 2234 牧场物语【多线程dp】
  6. HDU-1114_Piggy-Bank
  7. android service中stub作用是什么?
  8. redux之createStore方法底层封装模拟
  9. MapReduce数据流-Partiton&amp;Shuffle
  10. 开发者说:如何参与定义一款 IDE 插件