wpf 中的弹出窗口和切换按钮交互

2023-11-26

我有一个包含切换按钮和弹出窗口的控件。单击 ToggleButton 时,会出现弹出窗口。当 ToggleButton 未选中时,弹出窗口应关闭。此外,单击远离弹出窗口应导致其关闭,并导致切换按钮取消选中。

我通过将 Popup 的 StaysOpen 属性设置为 false,并将切换按钮的 IsChecked 属性设置为双向绑定到 Popup 的 IsOpen 属性来进行设置。

一切都很好,除了一种情况 - 选中按钮并打开弹出窗口后,单击按钮不会导致弹出窗口关闭,或者按钮返回到未选中状态。

我相信这一定是因为单击按钮会导致 Popup 的 StaysOpen 逻辑将 Popup 的 IsOpen 属性设置为 false。反过来,这会将切换按钮设置为未选中。这必须在处理我点击按钮之前发生 - 因此点击会重新检查按钮,即竞争条件。

知道如何获得我想要的行为吗?


如果您的假设是正确的,您需要一个自定义 Popup 类,如下所示:

public class MyPopup : Popup {
    protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e) {
        bool isOpen = this.IsOpen;
        base.OnPreviewMouseLeftButtonDown(e);

        if (isOpen && !this.IsOpen)
            e.Handled = true;
    }
}

您可能需要删除!this.IsOpen来自 if 语句。如果您改用 MyPopup,它将阻止 MouseLeftButtonDown 事件到达 ToggleButton。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

wpf 中的弹出窗口和切换按钮交互 的相关文章

  • 如何在 wpf C# 中播放双音频电影

    基本的 WPF 媒体元素仅播放 MKV 文件 但不查找和提供更改音频的设施 是否可以在 Media element 中播放此类视频 我在 stackoverflow 上搜索了很多问题 例如扩展媒体元素功能等或使用第三方组件 但没有找到任何合
  • 更换桌面壁纸/在桌面上绘制

    我想对我的 Windows 桌面进行一些自定义绘图 以便它看起来可以替换桌面背景 壁纸 我的第一次尝试是获得 DCdesktopListView并绘制它 IntPtr desktopDC GetWindowDC desktopListVie
  • Prism 应用程序中的数据模型位于何处?

    我无法将数据模型放置在 Prism 应用程序中的何处 大多数 如果不是全部 数据将来自网络服务 并且每个模块的网络服务都是唯一的 不幸的是 有些对象需要共享 例如人员 用户对象 我真的很困惑是否将这些服务直接添加到模块中 以便每个服务真正独
  • 如何保证popUp始终显示在PopUpButton上方?有测试用例和截图

    我的 Flex 4 6 Web 应用程序的少数用户抱怨它右下角的 mx controls PopUpButton 有时会打开一个列表下它因此无法使用 我自己无法重现它 可能是他们的 Flash 播放器和 或字体大小设置的不幸组合 我如何确保
  • 如何在silverlight中将子元素的宽度绑定到父元素的宽度

    我有一个宽度为 1 的网格 所以我认为实际宽度是在运行时决定的 在该网格中 我有另一个网格 我想将其宽度设置为父网格的运行时宽度 我如何通过绑定在 xaml 中做到这一点 我想这实际上会对你有帮助 Width Binding ActualW
  • WPF 按钮单击事件不起作用

    我有一个按钮 其中包含网格内的图像 我的问题是我无法制作该按钮Click活动工作 我的 XAML 代码
  • C# WPF 如何正确关闭新窗口?

    我有一个简单的问题 1 创建一个新的WPF项目 其中有启动窗口 MainWindow xaml 2 在此项目中 创建一个新窗口Window1 xaml 3 Windows1的已加载事件 让它关闭 4 放置一个Open按钮到MainWindo
  • TextBlock:Text与StringFormat的绑定

    是否可以绑定Text and StringFormat too
  • WPF 绑定中的“{Binding Path=.}”是什么意思?

    什么是 Binding Path 在 WPF 绑定中意味着什么 我看到有人用它 但找不到任何解释 绑定语法中是否还有其他特殊符号 除了 Binding 我找到了这个WPF 绑定备忘单 http www nbdtech com blog ar
  • WPF 网络浏览器在 Adob​​e 阅读器窗口中打开 PDF 文件

    我正在创建一个 32 位 WPF 应用程序 它需要在 WebBrowser 控件中显示创建的 PDF 在做的同时 WebBrowser Navigate new Url D TestPDF MyDocument pdf 它在 Adob e
  • WPF ValueConverter 错误处理的最佳实践是什么?

    应该实现两个功能 我想知道我需要对输入进行什么类型的验证以及如何管理错误 Public Function Convert ByVal value As Object ByVal targetType As System Type ByVal
  • 如何在c# wpf中获取元素的标签?

    我正在尝试使用 WPF 构建一个 GUI 在其中我可以绘制一些基本形状并将它们存储到 xml 文件中 形状是在 xaml 文件中设计的 我为每个形状添加了标签 现在我想在代码中获取它们的标签值 并将其作为属性存储在输出 xml 文件中 例如
  • 如何正确使用Dispatcher.BeginInvoke?

    我几乎在互联网上到处搜索 我用谷歌搜索了很多次并找到了很多结果 但我仍然找不到解决我的问题的方法 我正忙着改造旧的WinForms应用程序到新的 WPF 应用程序 但我在使用某些命令时遇到问题 在他们使用的 Winforms 应用程序中Co
  • WPF WebBrowser (3.5 SP1) 始终位于顶部 - 在 WPF 中显示 HTML 的其他建议

    我一直在拼命寻找一种在 WPF 应用程序中显示 HTML 的简单方法 有一些选项 1 使用WPF Web浏览器控件2 使用帧控制3 使用第三方控件 但是 我遇到了以下问题 1 WPF WebBrowser Control不是真正的WPF 它
  • Chrome 扩展程序不会从弹出文件加载我的 JavaScript

    我正在为论坛构建 Chrome 扩展程序 但问题是我的 popup html 的 JavaScript 不会执行任何操作 我在顶部添加了警报 popup js running 它确实出现了 但我的弹出窗口根本不显示 这是一个问题 因为弹出页
  • 传递给命令 WPF 的多个参数[重复]

    这个问题在这里已经有答案了 我有以下层次结构 abstract class TicketBase public DateTime PublishedDate get set class TicketTypeA TicketBase publ
  • 带有 ObservableCollection 和动态过滤器的 Silverlight ListBox

    假设我有这门课 public class MyData public bool IsActive get set public String Data1 get set public String Data2 get set and an
  • 如何在MVVM中实现对话框架构

    我正在开发一个基于 PRISM 框架 Unity Container 的 WPF 4 0 MVVM 应用程序 我想知道在 mvvm 模式中实现对话框的最佳方法是什么 我计划在我的应用程序中使用相当多的东西 所以我想要一些可重用的东西 由于您
  • 滚动 X 轴绘图区域 - Silverlight 柱系列

    我有一个工作正常的柱形系列图表 我有一个需要添加的功能 我希望水平滚动能够启用到 x 轴的绘图区域 这是屏幕截图 如果您看到屏幕截图 我有 6 个项目 并且由于项目数量较多 条形图非常细 所以假设如果我有 20 个项目 那么条形图将根本不可
  • 获取代码中的绑定结果

    我可能正在以错误的方式寻找这个 但是 有没有办法通过代码获取绑定的结果值 可能是一些显而易见的东西 但我就是找不到它 您只需致电ProvideValue的绑定方法 困难的部分是你需要通过有效的IServiceProvider到方法 编辑 实

随机推荐

  • 为什么这些创建引用的方式表现不同?

    下面的代码运行正确 let a mut 3 a 4 assert eq a 4 以下也运行 let a Some 3 let mut b a unwrap assert eq a unwrap 3 但以下内容无法编译 let a Some
  • 通过php流式传输mp3文件

    这是我的 php 代码 用于通过 php 流式传输 mp3 文件 set time limit 0 dirPath path of the directory songCode REQUEST c filePath dirPath song
  • 易失性重载?

    我听说 volatile 和 const 一样是重载的因素 如果函数被易失性参数重载 易失性版本什么时候被调用 我无法想象调用 volatile version 时的情况 这是一个例子 include
  • VS Code SCSS 自动编译为 CSS

    我是编程新手 刚刚开始学习 HTML CSS 对于编码 我开始使用 VS Code 我真的很喜欢它 到目前为止 我遇到的唯一问题是将 SCSS 自动编译为 CSS 我搜索并阅读了许多解决方案 我发现最好的解决方案是在 VS Code 终端中
  • PHP 解析 ISO 格式的日期 [重复]

    这个问题在这里已经有答案了 我目前正在使用 ConstantContact 它返回带有更新字段的 XML 格式如下 2013 02 13T08 35 34 195Z 我假设这是日期 c 格式 如何解析这个格式呢 斯特托时间没有返回正确的值
  • 问:如何在命令提示符下显示汉字

    是否可以在命令提示符下显示中文字符 如果是这样 设置是什么 如果您需要阅读简体中文 GBK 即代码页936 在dos提示符下输入以下命令 chcp 936 Update 微软推出了一个新的终端应用程序 https aka ms termin
  • 在 WPF 窗口的构造函数中,InitializeComponent() 之前和之后应该做什么?

    一般来说 我一直在初始化Window之前的自己InitializeComponent 并设置随后包含的控件 然而 我并没有那么一致 而且我还没有真正注意到排序有问题 所以 我 可能 正在做一些可怕的事情吗 特别是之前设置子控件的属性是否有问
  • 如何将 ABRecordRef 添加到 iPhone 中的 NSMutableArray?

    我想创建一个 ABRecordRef 数组来存储具有有效生日字段的联系人 NSMutableArray bContacts NSMutableArray alloc init ABAddressBookRef addressBook ABA
  • 如何使用
  • 而不是提交按钮提交表单?
  • 我希望能够提交表单 但不必单击提交按钮 我希望能够单击 li 元素并让它提交 任何帮助都会很棒 提前致谢 Ncoder 您可以在 LI 上放置一个 onclick 事件来调用表单提交事件 li
  • Oracle 和 SQL Server select (+) 等效

    在甲骨文中我有 SELECT t2 Regkood t2 naitatel t2 naitafaks t3 lahtiolekuaeg t1 FROM table1 t1 table2 t2 table3 t3 WHERE t1 clien
  • 为什么Java的类型推断这么弱?

    说吧 我有一个方法 public static
  • 如何在oracle数据库中存储BigInteger值

    我已经使用 JDBC 将 Java 程序连接到 Oracle 数据库 我想存储BigInteger数据库中的值 512 位 列的类型应该是什么 我正在尝试这样 我在数据库中获取了一列数字类型 我转换了BigInteger to BigDec
  • 如何在 Swift 中将 url.query 转换为字典?

    我有一个进入 AppDelegate 方法的 URL func application application UIApplication open url URL sourceApplication String annotation A
  • 与在 Rhino Mocks 中使用 Ordered() 等效的 AAA 语法是什么

    我一生都无法找到使用 Rhino 中的 Fluent AAA 语法来验证操作顺序的正确语法 我知道如何使用旧的学校记录 播放语法来做到这一点 MockRepository repository new MockRepository usin
  • Capybara + RSpec 仅在控制器规格中看到空白页。为什么?

    我正在尝试为一个简单的控制器编写控制器规范 但是 Capybara 看不到任何页面内容 但是 在我的浏览器中查看该网站的页面效果很好 我究竟做错了什么 谢谢 我的控制器规格 我的spec helper rb 我的宝石文件 您需要明确告诉您的
  • JavaScript 颜色渐变

    使用带或不带 Jquery 的 javascript 我需要根据开始和结束颜色创建颜色渐变 这可以通过编程来完成吗 结束颜色只会是开始颜色的较暗阴影 并且它用于无序列表 我无法控制 li 项目的数量 我正在寻找一种解决方案 允许我选择开始和
  • C# 事件处理程序

    如何在 C 中检查 Button Click 事件是否有关联的处理程序 If button Click null 抛出编译错误 你不能 事件只是公开 添加处理程序 和 删除处理程序 仅此而已 事实上 在 CLR 中 您还可以使用元数据将方法
  • 如何使用 google API for python 在特定文件夹下创建工作表?

    我可以在 我的云端硬盘 的根目录中使用以下代码创建一个工作表 但是如何在 我的云端硬盘 或 共享云端硬盘 的文件夹下创建该工作表 from googleapiclient discovery import build service bui
  • 如何在代码中设置绑定?

    我需要在代码中设置绑定 我似乎无法弄清楚 这是我尝试过的 XAML
  • wpf 中的弹出窗口和切换按钮交互

    我有一个包含切换按钮和弹出窗口的控件 单击 ToggleButton 时 会出现弹出窗口 当 ToggleButton 未选中时 弹出窗口应关闭 此外 单击远离弹出窗口应导致其关闭 并导致切换按钮取消选中 我通过将 Popup 的 Stay