问题标签 [routed-events]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
212 浏览

wpf - WPF 事件路由

我有一个网格控件,它有两个子元素(都是画布),第一个画布覆盖第二个。如何处理背景画布上的鼠标按下事件?

0 投票
1 回答
604 浏览

wpf - WPF 样式覆盖中断验证错误事件传播

我有一个覆盖窗口的自定义控件:

它还有一种风格:

不幸的是,这破坏了 Validation.ErrorEvent 对我的窗口内容的传播。也就是说,我的窗口可以很好地接收事件,但我不知道如何处理它来模仿标准窗口(或任何人)如何处理它。

如果验证控件放置在标准窗口中,它们就可以工作。如果我只是取出 OverrideMetadata 调用(将它们留在我的自定义窗口中),它们也可以工作。如果我离开 OverrideMetadata 调用,它们也可以工作,但不定义自定义 ControlTemplate。如果我将模板保留为默认模板,则里面的东西会正确接收它们的验证事件并使用它们的验证模板。

为什么会发生这种情况,如何使用自定义控件模板让处理这些验证错误事件的库存功能再次正常工作?

谢谢!

0 投票
1 回答
2234 浏览

c# - 检查 RoutedEvent 是否有任何处理程序

我有一个自定义的 Button 类,当它被点击(打开一个特定的窗口)时,它总是执行相同的操作。我正在添加一个可以在按钮的 XAML 中分配的 Click 事件,就像常规按钮一样。

当它被点击时,如果已经分配了 Click 事件处理程序,我想执行它,否则我想执行默认操作。问题是显然没有办法检查是否已将任何处理程序添加到事件中。

我认为对事件进行空检查会做到这一点:

...但这不会编译。编译器告诉我,除了 += 或 -= 之外,我无法对定义类之外的事件执行任何操作,尽管我试图在定义类内部进行此检查。

我自己实现了正确的行为,但它既丑陋又冗长,我不敢相信没有内置的方法可以做到这一点。我肯定错过了什么。

以下是相关代码:

0 投票
1 回答
690 浏览

c# - MS Surface Tag Visualizer 窃取接触事件

我在MS Surface 项目上的TagVisualizer控件上苦苦挣扎。从理论上讲,控制看起来很棒,允许您响应来自现实世界物理对象的输入

问题是控件将覆盖整个屏幕(因为我想在整个屏幕上捕获标签),因此,我的应用程序中没有其他控件将接收触摸事件。(除非他们是视觉树中的直系祖先)。

在我的应用程序中,我想要一种“层”类型的方法,其中每个层都可以响应(接触)输入:

现在不管我把标签可视化器放在哪里,它总是会从所有或一些其他层窃取联系事件。(由于RoutedEvents的性质)

对我来说,该控件在实践中似乎完全没用,因为它总是会干扰您的应用程序的其他控件。我在这里想念什么?

所以我的问题是:关于如何解决这个问题的任何建议?有没有人在类似的场景中使用过 TagVisualizers?如果是这样,你是如何解决这个问题的?

顺便说一句,这些层都工作正常,因为它们只会窃取直接位于其子元素之上的事件(该层的其余部分对于命中测试是不可见的)

0 投票
1 回答
1265 浏览

.net - TextChanged 事件 - 为什么这不会导致无限循环?

在尝试做一些更复杂的事情时,我遇到了一个我不太理解的行为。

假设下面的代码处理 textChanged 事件。

现在,在文本框中输入一个字符(例如,A)将导致事件被触发两次(添加两个“+”),最终显示的文本只是 A+。

我的两个问题是,为什么事件只命中了两次?为什么只有第一次运行事件才能真正设置文本框的文本?

提前致谢!

0 投票
2 回答
1583 浏览

wpf - 如何吞下 Expander.Header 中的下拉行为?

当用户在标题区域内单击时,我想防止扩展器展开/折叠。这与Q 1396153基本上是相同的问题,但我希望得到更有利的答案:)

有没有一种非侵入性的方法来做到这一点?我不确定如何将行为附加到 Expander.Header 内容以防止鼠标点击。我愿意通过固定的网格布局将内容漂浮在扩展器本身之外,但我并不热衷于解决方案。想法?

XamlPad 示例 XAML:

0 投票
2 回答
5294 浏览

wpf - 在 wpf 中引发事件传递参数

当双击 GridView 中的项目时,我想在我的窗口中添加选项卡。但是将添加的选项卡取决于单击的项目。我应该在 WPF 上以哪种方式执行此操作?我想过RoutedEvents,但我不知道如何用它传递参数。有什么建议么?

0 投票
1 回答
1952 浏览

wpf - 其他控件下方控件的单击事件

我有两个控件 A 和 B。控件 B 放置在 A 上。当单击 B 时,仅触发它的单击事件,但是我也需要触发 A 的单击事件。这可以使用路由事件以某种方式实现吗?

这是控件的屏幕截图:

替代文字 http://www.imagebanana.com/img/hu5znv4/buttons.png

当然,这种情况只是一个简化的示例,我正在寻找一种通用方法来在鼠标光标下方/在一个位置的所有控件上引发事件。然而,这个问题的具体解决方案也会对我有所帮助!非常感谢您的任何提示!

0 投票
2 回答
467 浏览

wpf - 自定义标记扩展返回 RoutedEvents

我正在尝试为我的关闭按钮创建一个通用事件,他们必须在其中关闭窗口,但在此之前将焦点设置到所有者窗口。我不想为每个文件都设置一个事件,因为这非常不切实际,因为我的应用程序中有 30 多个窗口。(所以如果我想改变这种行为,我每次都必须改变 30 个文件)

我不确定这是否是正确的方法,但我尝试制作一个返回 adelegate(object sender, RoutedEventArgs e)以下是代码的标记扩展:

FocusClose 方法获取一个窗口,将其关闭,但之前将焦点设置为其所有者。但我不能让它工作。当我在 xaml 中设置我的按钮时,

(win 是我的窗口名称),我收到错误消息:

Click="{e:CloseWindow {Binding win}}" 无效。'{e:CloseWindow {Binding win}}' 不是有效的事件处理程序方法名称。只有生成类或代码隐藏类的实例方法才有效。第 28 行位置 17。

难道我做错了什么?这是最好的方法还是我有其他选择?提前致谢!

克拉克

0 投票
1 回答
617 浏览

wpf - 手动引发 ContextMenuClosing 事件

我从 ContextMenu 派生,在派生类中我需要手动引发 ContextMenuClosing 事件。我尝试了以下两种方法:

我是 RoutedEvents 的新手,有人可以帮我如何手动引发 ContextMenuClosing 事件吗?谢谢!