问题标签 [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 回答
460 浏览

c# - C# - 获取收听 RoutedEvent 的订阅者列表?

我正在尝试获取订阅 PasswordBox PasswordChanged 事件的对象列表。

PasswordBox 有一个静态只读 RoutedEventPasswordChangedEvent和一个实例PasswordChanged事件。

谢谢!

0 投票
7 回答
8806 浏览

c# - MouseDoubleClick 事件不会冒泡

我的场景,简化:我有一个包含员工行的 ListView,并且在每个员工行中,有按钮“增加”和“减少”调整他的薪水。

假设在我的程序中,双击员工行意味着“解雇此人”。

问题是,当我快速单击“增加”时,这会触发 ListViewItem 上的双击事件。当然,我不想在我只是增加他们的薪水时解雇他们。

根据所有其他事件的工作方式,我希望能够通过设置Handled=true事件来解决这个问题。然而,这不起作用。在我看来,WPF 生成了两个独立的、完全未链接的双击事件。

以下是重现我的问题的最小示例。可见组件:

和处理程序代码:

启动该程序并双击列出的按钮后,两个消息框都会依次显示。(此外,在此之后按钮卡在向下位置。)

作为“修复”,我可以在 ListViewItem 处理程序上检查附加到事件的可视化树并检查“某处有一个按钮”并因此丢弃该事件,但这是最后的手段。在编写这样的代码之前,我至少想了解这个问题。

有谁知道WPF为什么要这样做,以及避免该问题的优雅惯用方式?

0 投票
1 回答
9202 浏览

c# - 为什么 e.Handled = true 不起作用?

我有以下 XAML

在后面的代码中我正在这样做

现在,即使我将鼠标移到Buttonset上,也会分别调用和e.Handled = true的事件。为什么?我应该怎么做才能阻止路由事件冒泡?GridStackPanel

0 投票
0 回答
215 浏览

asp.net-mvc - 不使用 RouteCollection 路由 MVC .NET Url

我们正在使用 MVC .NET 和 RouteCollection 类在我们的 Web 应用程序中路由 URL。这正常运行,直到我们在 URL 内的任意位置传递包含文本“PRN”的 URL。发生这种情况时,将不会发生路由,并向客户端返回 400 Page Not Found 错误。这就像在路​​由集合被咨询之前就抛出错误一样,因为 URL 应该采用的路由永远不会被触及(我的意思是底层代码的断点永远不会被命中,尽管没有字符串“PRN”的完全相同的 URL " 将达到断点)。

所以我认为这可能是一个页面验证问题,也许微软决定在 URL 包含短语“PRN”时抛出异常,因为它就像“打印”或“色情”,但如果是这样的话,那么我们会看到“从客户端检测到潜在危险的 Request.Form 值”错误,但我们没有。

研究这个很麻烦,因为谷歌认为 PRN 应该返回“色情”的结果,这意味着我 98% 的搜索结果是无效的(和不适当的)。在 Google 中使用“-porn”子句会将您的结果降低到大约 10-30 次点击,所有这些都没有用。

有谁知道为什么包含字符串“PRN”的 URL 不能正确路由?如果您有任何帖子或主题要指向我,那将是很棒的(再次,Google 让我失望了)。

0 投票
1 回答
854 浏览

wpf-controls - 带有 ButtonBase 的路由事件参数

我目前正在与一个成员团队一起开发一个程序,他们也不知道如何解决这个问题。我创建了一组专业用户控件“ImageButton”。我将它用于程序的菜单部分。菜单本身是另一个用户控件。

他们目前正在使用 ButtonBase.Click 来访问按钮,但它不适用于我的新 ImageButtons。

ButtonBase.Click 导致称为“MainMenu_Click”的事件。

private void MainMenu_Click(object sender, RoutedEventArgs e) { Button _menuButtonClicked = (Button)e.OriginalSource; this.ShowMainPage((MainMenuCommands)_menuButtonClicked.Tag); }

我已经尝试将它们解析为 ImageButtons 但它没有奏效。所以我需要一个类似于 ButtonBase.Click 的解决方案,但适用于我的 ImageButtons。

编辑:我正在使用 3 个文件: MainWindow.xaml(及其 cs) MainMenu.xaml(及其 cs) ImageButton.xaml(及其 cs)

MainMenu 上有几个 ImageButtons。MainMenu 用于 MainWindow。要设置的属性之一是 ButtonBase.Click。但我需要为 ImageButtons 而不是 System.Windows.Controls.Button 进行设置。

0 投票
1 回答
2170 浏览

wpf - PreviewMouseDown 未按预期进行隧道传输

我的应用程序上有以下树:

MyCustomControl 派生自 ItemsControl 并将其项目显示在 StackPanel 上。

MyCustomControl 需要知道何时在其内部单击鼠标,因此我已经覆盖了 OnPreviewMouseDown 方法,并希望在我的控件内收到任何鼠标按下的通知。

会发生什么:如果我在 Button1 内单击,PreviewMouseDown 事件会沿着树传播,并且 OnPreviewMouseDown 会按预期执行。但是,如果我单击 Item1,PreviewMouseDown 事件会在 MainWindow 之后停止,甚至不会到达 LayoutRoot。

以下是我使用Snoop获得的路由事件详细信息:

点击按钮1:

单击项目 1:

该事件从未被报告为已处理,因此据我所知,它应该继续进行隧道传输。

我在这里想念什么?

0 投票
1 回答
586 浏览

mvvm - 委托命令 test with EventArg parameter mstest

I currently have an event trigger firing a custom trigger action.

The action passes back a EventArgs type of object to the view's view-model.

This is all well and good when

I currently have an event trigger firing a custom trigger action.

The action passes back a EventArgs type of object to the view's view-model.

This is all well and good when I run the code it works perfectly. However, when I come to test this portion of code it all goes a bit rubbish.

As stated We are using an MVVM type pattern so I'm testing the 'Doing' end of the event trigger in my view-model and what I want to do is create a 'mocked' EventArgs object to pass into the execute method of my command under test. However it requires a RoutedEvent as it's ID property as stated above and I don't have access to it's constructor!

Has anyone got any ideas? The code converage in test is more important than the current implimentation so if this is thought to be 'untestable', then I can make changes.


I have answered my own Question I think.

Casting the object passed back from the view at an earlier point means that the object I am passing to the methods under test is more easily created.

This is what I have now for the method under test.

Before I had

Where the param is a SelectedItemCollection (previously a RoutedEventArgs, but now I use the IvokeCommandAction on the event trigger in the view, passign the SelectedItems). The param is now more easily passed into the method for the test and the code it much more descriptive as well. So it's all good for everyone.

0 投票
1 回答
1044 浏览

windows-phone-7 - WP7 自定义控件中的 RoutedEvents

在普通版本的 silverlight 中,您可以通过 EventManager 注册来创建事件处理程序。Windows Phone 7 没有该课程。我的问题是:如何创建将由父面板处理的事件。

我的场景:我创建了一个自定义类,其中包含一些文本框。Foreach 我已经添加了我的自定义行为,当点击文本块时会引发。行为如下:“单击自定义控件中的此 Textblock 时,请使用我的自定义 args 引发自定义事件(我想将它们传递给自定义控件本身(例如,指定将其更改为哪个 VisualState)。”

你能帮我解决我的问题吗?

0 投票
1 回答
483 浏览

c# - 路由事件和 ScrollViewer

这是我的元素树的组成方式(删除了不相关的信息)。

我正在模拟拖放。当你点击可点击的标签时,它会改变你的光标,给你拖动它的印象。我想要的是点击 TabItem,它会放回你的正常光标。

我不能使用 PreviewMouseDown 事件,因为它永远不会允许点击标签。

我发现的一个解决方案是在我的 ScrollViewer 和我的 ItemsControl 之间的元素树中添加一个大面板,具有透明背景以接收点击,在我的 ItemsControl 的 CollapsibleGroupHeaderItemsPanel 上放置一个事件处理程序,但这并不是一个真正优雅的解决方案。

我在 WPF 中使用 RoutedEvents 来解决这类问题......

注意:我的处理程序不是我的风格,风格只是为了提供更多信息

有比我更好的解决方案吗?

0 投票
1 回答
637 浏览

wpf - 将 RoutedEvent 处理程序从一个控件复制到另一个控件

我有一个 WPF MenuItem,它是从没有其他信息的函数返回的,我想将另一个(新)MenuItem 的单击事件设置为与第一个 MenuItem 相同的函数。

我已经在 Windows 窗体中看到了执行此操作的代码(例如,是否可以从一个控件“窃取”事件处理程序并将其提供给另一个控件?),但我找不到 WPF 路由事件的解决方案。