【问题标题】:Disabling click event changing IsPressed on wpf checkbox在 wpf 复选框上禁用单击事件更改 IsPressed
【发布时间】:2013-06-14 01:02:38
【问题描述】:

由于奇怪的要求,我需要禁用用户通过单击事件更改复选框的 IsChecked 属性的能力。我无法禁用该复选框,因为右键单击它会弹出一个上下文菜单,该菜单为控件提供一些选项,包括允许用户通过某些属性控制复选框的 IsChecked 状态的选项。有没有办法在不创建从该控件扩展的类的情况下做到这一点?这是在 c# 中使用 wpf 复选框。

【问题讨论】:

  • 如何处理事件并为每个事件调用IsChecked = False

标签: c# wpf xaml events checkbox


【解决方案1】:

您可能想尝试将IsHitTestVisible 属性设置为false

还要记住键盘还在,所以您可能还想将IsTabStop 也设置为false

【讨论】:

  • 哇,确实有效,我认为 IsHitTestVisible 会禁用上下文菜单。这家酒店到底在做什么?我以前使用过它,但从未完全理解它的文档。在看到您的答案之前,我最终处理了 PreviewMouseLeftButtonDownevent 以获得类似的结果。此外,比重复切换值的建议要干净得多。
【解决方案2】:

注册 Checked 事件并设置 IsChecked = !IsChecked。然后,当您需要更改选中的属性时,请取消注册 Checked 事件的值,然后重新注册。不是很好,但它应该可以在不创建新子类的情况下工作

【讨论】:

  • 如何取消注册选中的事件?我采用了上面的解决方案,但这似乎很有用。
  • 在代码中更改 IsChecked 属性时,您将删除 IsChecked eventHandler 进行更改,然后再次设置处理程序
【解决方案3】:

您可以禁用上下文菜单,方法是在复选框控件的上下文菜单打开(冒泡)事件中将 eventargs 的处理属性设置为 true。

【讨论】:

  • 我想启用上下文菜单,而不是禁用它。我对这个回复有点困惑。
猜你喜欢
  • 2017-05-07
  • 2010-09-16
  • 2011-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多