WPF判断当前窗体是否为模态

简介: 原文:WPF判断当前窗体是否为模态WPF判断当前窗体是否为模态   1、使用System.Windows.Interop.ComponentDispatcher.IsThreadModal来判断 参照:https://social.
原文: WPF判断当前窗体是否为模态

WPF判断当前窗体是否为模态
 
1、使用System.Windows.Interop.ComponentDispatcher.IsThreadModal来判断
注意事项:
        1、Works not immediately after ShowModal is called. Some events still cannot tell if modal
        2、This doesn't work if a modal dialog is showing this modeless dialog!
2、使用反射
eg:新建一个拓展方法
1 public static bool IsModal(this Window window)
2 {
3     return(bool)typeof(Window).GetField("_showingAsDialog", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(window);
4 }
 
改进为:
1 public static bool IsModal(this Window window)
2 {
3     var filedInfo=typeof(Window).GetField("_showingAsDialog", BindingFlags.Instance | BindingFlags.NonPublic);
4 
5     return filedInfo!=null&&(bool)filedInfo.GetValue(window);
6 }

 

 
推荐第二种
目录
相关文章
|
C# 编解码
WPF C# 多屏情况下,实现窗体显示到指定的屏幕内
原文:WPF C# 多屏情况下,实现窗体显示到指定的屏幕内 针对于一个程序,需要在两个显示屏上显示不同的窗体,(亦或N个显示屏N个窗体),可以使用如下的方式实现。
4991 0
WPF控件和窗体一起放大一起缩小
WPF控件和窗体一起放大一起缩小
244 0
|
C# 容器
WPF框架下,窗体的嵌套显示
WPF框架下,窗体的嵌套显示
227 0
|
C# 索引
WPF实用指南二:移除窗体的图标
原文:WPF实用指南二:移除窗体的图标 WPF没有提供任何功能来移除窗体上的icon图标。一般的做法是设置一个空白的图标,如下图1: 这种做法在窗体边框与标题之间仍然会保留一片空白。
1264 0
|
C#
WPF中制作无边框窗体
原文:WPF中制作无边框窗体 众所周知,在WinForm中,如果要制作一个无边框窗体,可以将窗体的FormBorderStyle属性设置为None来完成。
1544 0
|
C#
WPF透明窗体制作
原文:WPF透明窗体制作 窗体的样式: 其中Border用来实现透明效果,Grid用来呈现窗体内的控件,为了避免窗体内的控件变成透明的,所以Border,Grid必须处在同一级别上。
911 0
|
C# 容器 前端开发
WPF Viewport3D 解决透视模式时窗体模糊
原文:WPF Viewport3D 解决透视模式时窗体模糊 最近折腾Viewport3D玩,遇到了一些诡异的问题,研究一下略有心得,特此和大家分享~ 三维图形概述: https://msdn.microsoft.com/zh-cn/library/ms747437.aspx 概要 三维坐标系         二维图形的 WPF 坐标系将原点定位在呈现区域(通常是屏幕)的左上角。
1036 0
|
C#
wpf无边框窗体移动和大小调整
原文:wpf无边框窗体移动和大小调整   using System; using System.Windows; using System.
1648 0
|
C# Windows
WPF 窗体中获取键盘和鼠标无操作时的超时提示
原文:WPF 窗体中获取键盘和鼠标无操作时的超时提示 通过调用Windows API中的GetLastInputInfo来获取最后一次输入的时间 using System;using System.
901 0
|
C#
WPF窗体隐藏鼠标光标的方法
原文:WPF窗体隐藏鼠标光标的方法 要引用 System.Windows.Input;   Mouse.OverrideCursor = Cursors.
1789 0