wpf遮罩~~~(搬运过来的)
Posted wuyaxiansheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf遮罩~~~(搬运过来的)相关的知识,希望对你有一定的参考价值。
方便自己以后用,原文: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, 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>
使用方法
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); } } }
以上是关于wpf遮罩~~~(搬运过来的)的主要内容,如果未能解决你的问题,请参考以下文章