问题标签 [routedevent]
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.
wpf - WPF FrameworkElement 未接收鼠标输入
试图让 OnMouse 事件出现在 child 中FrameworkElement
。父元素是 a Panel
(并且Background
属性不是 Null)。
OnMouse 永远不会被调用,事件总是未处理,Snoop 告诉我路由事件似乎只到达Panel
元素。
文档说FrameworkElement
处理输入,但为什么不在这种情况下呢?
c# - 已处理的 RoutedEvent 继续冒泡树
我正在开发一个TreeView
基于控件,我的双击事件继续冒泡我的TreeViewItem
节点。
目标是在TreeViewItem
双击时展开或折叠。
我有一种将事件的事件处理程序应用于MouseDoubleClick
每个TreeViewItem
.
这是处理事件的代码
这适用于顶层,TreeViewItem
但是当双击一个子项时,事件会在树上冒泡,导致整个分支崩溃。为什么事件继续冒泡?如前所述,[1]
我将事件设置为已处理。
wpf - 将输入事件从 HwndHost 传递到底层 WPF 控件?
有没有办法将发生在 HwndHost 上的输入事件(主要是鼠标,但最终也是键盘输入)传递回底层 WPF 控件(例如面板)?我可以连接到 HwndHost 中的 WndProc 并接收 Windows 消息。我可以手动为鼠标单击创建一个 routedevent 并将其发送给父级以便它冒泡吗?和想法将不胜感激。谢谢 jkersch
wpf - WPF - 理解 RoutedEvents
嗨,我正在学习 WPF,目前我正在阅读有关 RoutedEvents 的信息。在“C#中的Pro WPF”一书中,我在下面介绍了一些代码片段
关键是我看不到路由事件的区别/优势(通过这个例子判断)。在常规的 C# 中,我会做同样的事情 - 为表单上的每个元素添加处理程序(就像在此处完成的那样)。
起初,当我阅读有关路由事件的信息时,它似乎是这样工作的。我为我的表单/控件/窗口上的所有可视元素的父级添加事件处理程序。如果我单击子项,则会引发 mousedown 事件并通过可视化树向下传播。如果事件到达网格,则调用事件处理程序。但是我错了,或者我做错了什么。有人可以解释一下正常事件和路由事件之间的区别吗
编辑插入代码时发生了一些奇怪的事情。插入整个代码片段我只得到标签
wpf - 我想要在 WPF 中的 PreviewKeyDown 事件中“按下”键的那一刻
当我跳入 PreviewKeyDown 时,我的 RichTextBox 中插入符号的右侧字符尚未移动。我想对这个事件说,你的东西把字符移到右边,然后让我做我的东西。我怎样才能做到这一点?
更新:你知道我在说什么...... =>
插入符号直接位于单词“Harold...”之前,然后我按了几次空格键将“Harold...”向右移动。但是格式化黑色下划线似乎被卡住了......我怎样才能让下划线保持连接到包含名称“Harold......”的 Run 对象?
我想在 KeyDown 事件中捕获空格键的原因是获取新的隐式创建的 Run-object 并删除黑色下划线。
c# - 鼠标事件未到达 UIElement
我有一个 6x8 的System.Windows.Controls.Canvas
对象网格。左上角的画布不接收鼠标事件,而所有其他画布都接收。我试过OnMouseMove
和OnMouseClick
事件。
子对象没有处理事件,因为System.Windows.Media.VisualTreeHelper#GetChildrenCount()
没有显示任何子对象。我也抓不住PreviewOnMouseMove
。我的画布前面是否有一些(可能是透明的)控件优先?
wpf - WPF RoutedEvent(通过 EventManager.RegisterClassHandler)
我正在尝试找到一种通用方法来跟踪当前窗口中任何控件(数据绑定与否)的“修改”(例如,在典型的“选项”窗口中启用或禁用“应用”按钮。)事实上,我只需要连接一些事件处理程序,例如 ComboBox.SelectionChanged 或 TextBox.TextChanged。在 WinForms 中,我必须遍历表单中的所有控件并一一连接这些事件,并且它起作用了。在 WPF 中,我认为我可以用更少的代码来完成它
使用这一行代码,我将能够为 MyCtrl 中的所有组合框连接组合框的选择更改事件。但是,我遇到的问题是,如果我没看错,当窗口中有另一个不是组合框但也从“ Selector
”派生的控件时,也会触发此事件。例如,我在同一个窗口上也有一个数据网格(实际上数据网格中没有组合框列),当我选择不同的行时也会触发此事件。
因此,上面的代码行似乎为从Selector
基派生的所有控件连接了 SelectionChanged 事件,而不仅仅是组合框。
这是正确的吗?我怎样才能为所有组合框连接 SelectionChanged 事件?
编辑更多示例:在同一个控件上,我有一个组合框和一个按钮,我想跟踪 Button.Click 和 ComboBox.SelectionChanged 事件,如下所示
问题是我在单击 ComboBox 下拉按钮后立即获得 Button.Click 事件。我怎样才能防止这种情况?
以下是本次活动的一些额外信息:
wpf - 跟踪控件“修改”的最糟糕的方法是什么?
我有一个用户控件,它可能包含许多不同类型的控件(例如按钮、文本框、组合框或复选框)。我需要一种通用的方法来跟踪是否有任何更改。在大多数情况下,我不关心细节(即我不需要知道哪个文本框发生了变化)。当我看到 时EventManager.RegisterClassEvent
,我认为这将是我的解决方案,但很快我意识到它不是。这个问题是它被解雇了太多。例如,如果我在同一个控件中有一个按钮和一个组合框,那么当我点击组合框下拉菜单时也会触发 button.click 事件。
在 WinForms 中,我必须遍历用户控件中的所有控件并订阅适当的事件(例如 TextBox.TextChanged 或 ComboBox.SelectedIndexChanged),这很乏味但很有效。我希望在 WPF 中有更好更简单的方法来做到这一点。
wpf - WPF 应用程序命令绑定不起作用
嗨,我对 WPF 中的 CommandBindings 有一个奇怪的问题。我在对象的构造函数中添加了 CommandBindings。命令绑定看起来像这样
负责执行的对应函数看起来是这样的
问题是只有 cut 命令有效。我的意思是,如果我在任何其他功能(复制或粘贴)中设置断点,则不会命中断点。有人可以告诉我我做错了什么吗?
wpf - WPF 命令绑定 - 如何访问事件处理程序
嗨,有什么方法可以选择 XAML 应该在哪里使用命令绑定事件处理程序?我在我的 cusotm 控件中添加了一些命令绑定,但是对 execute 和 can_execute 负责的函数不是直接在后面的代码中,而是在另一个类中。这个类是从 Canvas 派生的,我在 XAML 中创建了这个类的实例。
我以这种方式添加命令绑定
有什么办法吗?或者我必须将事件处理程序直接转移到代码隐藏?