首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WPF拦截模态窗口外的点击

首先,要明确的是,WPF 是 Windows Presentation Foundation(Windows 呈现基础)的缩写。WPF 是一种由微软开发的呈现技术,用于在 Windows 平台上创建丰富的图形化用户界面。

在 WPF 中,模态窗口是一种允许用户在应用程序中弹出另一个窗口的技术。这种技术可以使应用程序更加灵活和交互性更强。

要在 WPF 中拦截模态窗口外的点击,可以使用 WPF 的事件处理机制。在 WPF 中,当用户点击屏幕上的元素时,会触发相应的点击事件。可以使用事件处理程序来拦截这些事件,并在事件发生时被调用。

在 WPF 中,可以使用 Window.PreviewMouseLeftButtonDown 事件来拦截模态窗口外的点击。这个事件是在鼠标左键被按下时触发的,可以在事件处理程序中执行相应的操作。

例如,以下代码演示了如何使用 Window.PreviewMouseLeftButtonDown 事件来拦截模态窗口外的点击:

代码语言:csharp
复制
private void Window_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    // 判断点击是否发生在模态窗口之外
    if (e.Source == this)
    {
        // 在这里执行相应操作
    }
}

在上面的代码中,e.Source 属性用于判断点击是否发生在模态窗口之外。如果点击发生在模态窗口之外,就可以在 Window_PreviewMouseLeftButtonDown 事件处理程序中执行相应的操作。

需要注意的是,在 WPF 中,模态窗口外的点击事件是无法被 Window.PreviewMouseLeftButtonDown 事件拦截的。因为模态窗口外的点击事件已经由系统处理了,因此不需要在 WPF 中进行额外的处理。如果需要在模态窗口外点击时执行某些操作,可以在模态窗口上添加一个按钮,并在按钮的点击事件中执行相应的操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WPF RadioButton 支持再次点击取消选中功能

WPF RadioButton 支持再次点击取消选中功能 目录 让 WPF RadioButton 支持再次点击取消选中功能 零、前言 一、方法一:后台直接处理 二、方法二:提取为自定义控件...可是后来需求说选中项再次点击需要取消选中,摔!...一、方法一:后台直接处理 网上找到方法就是在后台新增一个 bool 变量,用来记录上次(或者说点击前)RadioButton 是选中还是未选中,然后在点击事件中进行判断处理: 来看看效果吧(动图):...原因就是,我们新建那个用来记录上次选中状态变量,在用户选中其它项,同时 WPF 框架自动取消选中本项时,没有进行记录。...可以参考我之前翻译文章《【翻译】WPF 中附加行为介绍 Introduction to Attached Behaviors in WPF》: 在一个元素上设置一个附加属性,那么你就可以从暴露这个附加属性类中获得该元素访问

2K30

FloatWindowUtils 实现及事件冲突解决详解

悬浮 悬浮即可以显示在宿主应用之外 View 视图,理论上任何 View 都能以悬浮形式展示在宿主应用之外甚至锁屏界面,一般在工具类应用中使用比较多,通过悬浮可以很方便从外界与宿主应用进行交互...设置 View.OnTouchListener,重写这个 ViewGroup onInterceptTouchEvent 方法,根据拖拽意图让它决定是否拦截所有事件不向下传递,从根本上解决冲突...,专门处理事件拦截父View */ private FloatView floatView; /** * 外部传进来需要悬浮View */ private...,是点击则返回false去响应子view点击事件 boolean isIntercept = false; switch (ev.getAction()...break; } return false; } /** * 手指点击口外事件

2.8K20

直击本质:WPF 框架是如何实现模态窗口

想知道你在 WPF 编写 Window.ShowDialog() 之后,WPF 框架是如何帮你实现模态窗口吗? 本文就带你来了解这一些。...---- Window.ShowDialog WPF 显示模态窗口方法就是 Window.ShowDialog,因此我们直接进入这个方法查看。...由于 .NET Core 版本 WPF 已经开源,我们会使用 .NET Core 版本 WPF 源代码。...Window.ShowDialog 源代码可以在这里查看: Window.cs 这个方法非常长,所以我只把其中与模态窗口最关键代码和相关注释留下,其他都删除(这当然是不可编译): 1 2 3 4...可以在这里(ComponentDispatcherThread.cs)看它代码,实际上是为了模态计数以及引发事件,对模态效果没有本质上影响。

42730

WPF 非客户区触摸和鼠标点击响应

默认在 WPF 里面是不响应非客户区鼠标事件,但响应触摸事件 在没有喝下午茶时候 lsj 告诉我,在项目里面在一个定制窗口里面的非客户区用鼠标点击不了一个按钮,但是用触摸可以点击按钮。...本金鱼一开始认为这是之前修复问题,但是作为金鱼已经不记得是怎么修了,为了让本金鱼下次遇到触摸或鼠标问题时候可以解决,于是写了这个博客 本文将会告诉大家在 WPF 里面关于非客户区触摸和鼠标点击响应...在本文开始之前,需要大家知道非客户区 Non-client Area 概念,其实就是窗口标题栏大概意思,详细请看 一起学WPF系列(3):窗体 - Robin Zhang - 博客园 和 WPF...spy++ 知道在 WPF 标题栏点击时候是可以收到 Windows 鼠标消息,也就是这里是 WPF 处理 我和 lsj 说也许是之前 WPF 框架大佬写时候还不知道有触摸,于是处理了鼠标事件...现在 lsj 正在看 WPF 源代码,想要找到是如何让标题栏支持触摸但是不支持鼠标点击WPF 下,可以在非客户区触摸拖动时候,同时触发触摸拖动和窗口拖动。

1.2K20

WPF 制作支持点击穿透高性能透明背景异形窗口

默认 WPF 支持点击穿透透明背景窗口,是通过 AllowsTransparency 实现,但是此方法性能比较低。...,而本文是提供了全穿透功能 默认 WPF 提供 AllowsTransparency 方法,这个方法可以适用在让窗口透明部分能点击穿透,窗口不透明部分点击不穿透。...但根据 WPF 从最底层源代码了解 AllowsTransparency 性能差原因 可以了解到此方法性能比较低 本文提供方法是使用 WPF 制作高性能透明背景异形窗口(使用 WindowChrome...而做不到和 WPF 提供 AllowsTransparency 方法让透明部分支持穿透。...,以上代码完成之后,在设置窗口是否点击穿透,就可以用上 WS_EX_TRANSPARENT 样式了,如下面代码 /// /// 设置点击穿透到后面透明窗口

2.7K20

2020-5-22-如何使WPF在窗口外部区域可拖动缩放

今天来和大家聊如何使WPF在窗口外部区域可拖动缩放。 ---- 问题来源 对于WPF窗口来说,默认可拖动缩放区域较小。 在某些应用场景下我们期望能够设置一个较大可拖动缩放区域。...窗口外部能够拖动缩放,问题关键就在于如何能在外部收到鼠标点击拖动等消息。...通知主窗口 接下来一个重要事情就是辅助窗口被点击拖动时,通知主窗口进行拖动缩放。 这个行为有很多实现方法,最简单一种是,让辅助窗口假装自己是主窗口非客户区。...听着很复杂,实际做起来很简单,就是在辅助窗口被点击时,给主窗口发一个非客户区被点击win消息。...例如下面的代码加入到辅助左侧辅助窗口中,就能让它在接收到windows鼠标左键点击时,向主窗口发出一个左侧非客户区border被点击消息。

1.8K10

WPF 绑定命令在 MVVM CanExecute 和 Execute 在按钮点击都没触发可能原因

WPF 推荐使用 MVVM 绑定命令,但是绑定命令会存在很多坑,其中一个就是焦点问题。...如果在用户点击按钮时候出现了焦点修改,那么此时命令是不会被触发 在命令绑定按钮点击时候,会触发按钮拿到键盘焦点,此时其他元素如果之前有拿到焦点,那么会触发元素失去焦点。...如果在元素一次 Dispatcher 过程重新拿到焦点,那么按钮命令将不会被触发 说起来复杂,因为在项目的代码是很复杂很难直接看到这个问题,所以我建议创建一个新 WPF 项目,不要引用任何小伙伴框架...,可以看到输出窗口输出 林德熙是逗比 然后点击文本,输入文字,然后点击按钮,可以发现按钮命令没有触发 在命令 CanExecute 打上断点,可以发现连 CanExecute 都没有进入 如果遇到了在按钮...MVVM 绑定命令,发现命令没有触发,同时 CanExecute 都没有进入,可以猜可能是命令没有初始化、命令没有绑对,还有可能是在过程出现焦点问题 另外不一定是用户直接调用 Focus 其他 WPF

1.6K20

dotnet 从入门到放弃 500 篇文章合集

WPF 博客 ? UWP 博客 ? ? ? ? ? dotnet core 博客 ? git 相关博客 ?...win10 uwp 获取按钮鼠标左键按下 win10 uwp 获取文件夹出错 win10 uwp 获得元素绝对坐标 win10 uwp 获得缩略图 win10 uwp 萤火虫效果 win10 uwp 让焦点在点击在页面空白处时回到...uwp-入门 win10-uwp-兴趣线 win10-uwp-切换主题 win10-uwp-列表模板选择器 win10-uwp-初始屏幕 win10-uwp-判断本地ip win10-uwp-右击浮出点击位置...WPF 弹出 popup 里面的 TextBox 无法输入汉字 WPF 拖动时出现 Invalid FORMATETC structure WPF 拖动滚动 wpf 拦截异常 让多线程异常不会让程序闪退...ViewBox 不显示线问题 WPF 解决 xaml 设计显示异常 WPF 解决弹出模态窗口关闭后,主窗口不在最前 WPF 设置纯软件渲染 WPF 设置输入只能英文 WPF 调试 获得追踪输出 WPF

10.4K20

Android实现长图文截图功能实例代码

悬浮那么小,难道每次我都得滑一定距离,然后点一次悬浮么,理论上可以,但体验不好。估计更多人倾向只要触摸屏幕就可以截图,所以选择监听悬浮窗外触屏事件。...3.如何监听悬浮窗口外TouchEvent? 悬浮窗外触屏事件都已经脱离整个应用了,如何监听呢?...这样会出现整个手机事件都将被这个透明背景拦截,无法传递到手机桌面,如果非开发人员安装了这个软件。。,告诉他,重新开机吧。。。...,本以为可以监听桌面的Down、Move、Up事件,但是出现事件全部被拦截死在这个透明背景上,无法传到手机桌面,再发现组合这些参数,总结这种思路不可取。...查看注释可以知道设置FLAG_WATCH_OUTSIDE_TOUCH可以在窗口外部(即App外部)接收一个指定事件MotionEvent#ACTION_OUTSIDE,但同时,你将无法接收到任何Down

1.9K20

使用 WPF 开发一个 Windows 屏幕保护程序

安装屏幕保护程序 现在,在你 scr 程序上点击右键,可以看到一个 “安装” 选项,点击之后就安装了。 ? 安装之后,你会立即看到我们屏幕保护程序已经运行起来了。 ?...实际上本应该是 Visual Studio 创建WPF 程序默认大小。 处理屏幕保护程序参数 我屏幕保护程序是一个非常简单程序,几乎就是默认模板。...Args.Text = string.Join(Environment.NewLine, args); } } 在前面的截图中,我们看到参数是 “/p 8457636”,这是表示此程序需要在预览格中进行预览...还有其他参数,用于处理其他情况: /s 屏幕保护程序开始,或者用户点击了 “预览” 按钮 /c:463970 用户点击了 “设置” 按钮 /p 8457636 用户选中屏幕保护程序之后,在预览格中显示.../write-a-windows-screen-saver-using-wpf.html ,以避免陈旧错误知识误导,同时有更好阅读体验。

1.2K20

悬浮开发设计实践

7.2 边界逻辑关闭悬浮7.3 点击多次打开页面7.4 Home键遇到问题01.整体概述1.1 项目背景业务场景分析以视频通话为例,在视频通话时,我们打开其他应用或点击Home键退出时或点击缩放图标...,悬浮会显示在其他应用之上,给人假象是通话页面变小了,点击悬浮回到通过页面,悬浮消失。...,且悬浮可拖拽,不影响其他界面焦点;点击悬浮可返回原来Activity1.2 遇到问题什么是悬浮全局悬浮在许多应用中都能见到,点击Home键,小窗口仍然会在屏幕上显示。...flags值用于确定悬浮行为,比如说不可聚焦,非模态对话框等等,属性非常多,大家可以查看文档。gravity值用于确定悬浮对齐方式,一般设为左上角对齐,这样当拖动悬浮时候方便计算坐标。...然后在移动(ACTION_MOVE)时候,如果用户移动了手指,那么就拦截本次触摸事件,从而不让点击事件生效。

2.3K40

推荐一个IT老鸟肝了2月有余免费开源WPF企业级开发框架

日志记录:系统自带 解决方案详解 ---- 解决方案从上到下依次为: JHRS.Core(客户端业务核心) 客户端业务核心 在JHRS.Core这个库里面,各个目录功能说明如下: Aop:实现了一个点击按钮显示转圈圈效果类...,一般用于加载数据,点击按钮从服务器获取数据让用户等侯片刻。...并且在基类里面定义了公共方法,如消息提示框,消息弹框,打开模态窗口等,效果见下方所示。...JHRS.Shell(WPF客户端入口程序) WPF客户端入口程序 JHRS.Shell是WPF客户端项目的入口程序,并且定义了整个系统公用消息提示框,模态窗口风格,主窗口等;登录入口也是在这里定义...消息提示框 消息提示框 消息弹框 消息弹框 确认消息框 确认消息框 模态窗口 模态窗口 遮罩层效果(蒙层效果或Loading效果) 遮罩层效果一般用于点击按钮,加载数据时使用,即调用接口到数据呈现中间有一个等待过程

2.2K30
领券