问题标签 [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.

0 投票
1 回答
3246 浏览

wpf - 您可以将路由事件与 MultiTrigger 一起使用吗?

WPF 是否支持使用响应路由事件但仅满足条件的触发器?

例如,WPF 支持通过事件触发器触发路由事件。IE:

但是,我正在寻找仅在满足特定条件时才触发的触发器。通常,您使用 MultiTriggers 来满足多个条件。IE:

但是,MultiTrigger 或 MultiDataTrigger 似乎都不支持触发路由事件。甚至可以在 XAML 中混合这两个路由事件和条件的概念吗?

0 投票
1 回答
1289 浏览

wpf - WPF中的路由事件是否弱

WPF 中的路由事件是否存储对附加到它们的处理程序的强引用?

0 投票
5 回答
36542 浏览

c# - 关闭时淡出 wpf 窗口

我想在我的应用程序中淡入/淡出一个窗口。
淡入发生在Window.Loaded并且我想在关闭时淡出(Window.ClosedWindow.Closing)。淡入效果完美,但Window.Closing不允许为RoutedEvent属性值。
RoutedEvent应该使用什么来关闭?

我收到错误消息,无法将值“Window.Closing”分配给属性“RoutedEvent”。事件名称无效。

0 投票
3 回答
4927 浏览

c# - 通过反射删除路由事件处理程序?

背景:我正在使用 WPF 和 C# (3.5),并且正在开发一个允许用户查看已经是已编译程序集的一部分的窗体/窗口/用户控件的应用程序。当他们查看它时,他们应该能够单击任何控件(按钮、文本框,甚至标签),控件旁边应该会出现一个小弹出编辑器,然后他们可以在其中输入该控件的工具提示、帮助 ID 等。

总而言之:我需要在 WPF 中模仿一个基本的设计视图。这意味着我至少需要执行以下操作:

  • 从给定程序集中加载用户控件/窗口(没问题)
  • 将它实例化为用户控件/窗口(没问题)
  • 清除其所有控件的所有订阅事件处理程序
  • 将我自己的“ShowEditorPopup”EventHandler 分配给每个控件(应该不是问题)

首先,如果有人对更简单或更好的路线提出建议,请告诉我。(显然 WPF 没有 DesignHost 类型的组件(就像我读过的 .NET 2 一样),所以它已经过时了。)

我卡在粗体项目上 - 清除所有订阅的 EventHandlers。在挖掘了一些并进入 Reflector 之后,我想出了这个很酷的危险代码块(在这里,我只是想获取在 XAML 中定义的名为 someButton 的单个按钮的所有事件处理程序):

这是代码(如果需要,您可以从 someButton_Click eventHandler 运行它):

它适用于 Invoke,它返回: 对象与目标类型不匹配(即,我的参数或目标对象被弄乱了)。我发现您可以通过以下方式解决此问题:

当我在 GetEventHandlers MethodInfo 上设置手表时,它看起来很棒,只是不喜欢我在调用 Invoke 时传递的内容。

我觉得我正处于如何获取 RoutedEvent 处理程序列表的最后一步(比如旧的 GetInvocationList(),它显然不适用于 WPF RoutedEvents)。从那里,从每个控件中删除这些处理程序并拥有一个无事件的表单将非常简单,然后我可以将自己的事件添加到其中。

有什么线索吗?同样,如果有更好/更简单的方法来完成整个任务,请告诉我:)

0 投票
1 回答
1894 浏览

wpf - WPF 处理来自 UserControl 的 RoutedEvent

我有一个UserControl,默认是VS生成的,只加了TextBlock:

现在,我从后面的代码中动态地将这个控件的几个实例放入父控件的 WrapPanel 中。我想处理来自 MyControl 实例的所有鼠标左键单击。我有以下代码:

在事件处理程序中,我做了一些动作,它起作用了。但是,在编辑 XAML 文件时出现以下错误:在类型“MyControl”中找不到可附加属性“MouseLeftButtonDown”。如何解决这个问题?

0 投票
2 回答
2689 浏览

wpf - WPF 如何创建自定义 Tunel routedevent?

我需要一个从父控件到子控件的隧道路由事件隧道的简单示例。

(这不是真正的代码)——事实上,我越深入,我就越认为 XAML 是错误的——可能不应该在子节点上注册 XAML 中的隧道事件(不确定?)

简单、简洁的例子会很有帮助。

谢谢,艾伦

0 投票
1 回答
523 浏览

wpf - 自定义路由事件失败!

我的应用程序如下所示:

在 Control (4) 中,我有一个自定义路由事件,我希望 Frame (2) 处理它。

事件:

和框架 XAML:

编译正常,但会发生这种情况:

找不到名为“PreviewArtistLinkClicked”的属性的 DependencyProperty 或 PropertyInfo。

0 投票
2 回答
3625 浏览

c# - 使用 UI 自动化以编程方式打开上下文菜单?

我正在尝试使用 UI 自动化实现右键单击上下文菜单。由于 UI 自动化没有原生右键单击模式,我将 ExpandCollapse 提供程序添加到列表视图的 AutomationPeer 类,并将展开和折叠映射到打开和关闭上下文菜单。

我的问题是,有没有更好的方法来调用上下文菜单而不涉及尝试使用私有构造函数实例化一个类?我不能将 SendKeys 与 Shift-F10 一起使用。我想使用 PopupControlService 但它被标记为内部。

我糟糕的解决方法:

0 投票
2 回答
286 浏览

wpf - 为 Surface 控件的 OnContactDown 事件添加延迟

我们正在使用 Controls.PreviewContactDown、PreviewContactUp 和 PreviewContactChanged 事件来捕获在 Surface 上放置、移除和移动的标记项目,这在 Surface 附带的 Simulator 应用程序中效果很好。

在实际的 Surface 上,如果您移动带标签的项目太快,相机实际上会失去标签的焦点,假设它已被移除,然后在停止移动时重新捕获它。这为我们的客户提供了非常糟糕的体验。

我提出的是一种覆盖或创建一个新事件的方法,该事件将响应标记的项目事件,但直到延迟之后才触发事件处理程序......即如果“ContactUp”被触发,等待 100 毫秒然后执行事件处理程序。理想情况下,我们只能使用备用附加属性来定义这些事件处理程序,即

如果我们可以让它使用 ICommand 对象而不是事件处理程序,那就更好了。

0 投票
1 回答
963 浏览

wpf - C#/WPF - WPF 类中不是 UIElement 的 RoutedEvent

我有一个班级需要通知发生了重要的事情。该类位于 WPF 项目中,即使这个特定的类是无外观的(并且不UIElement直接或间接地从 继承)。

通常,我只是注册一个RoutedEvent来获得这个功能,但由于这个类既没有 AddHandler 也没有 RemoveHandler,我无法让它工作。任何人都知道另一种获得RoutedEvent行为的方式?