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

events - 当从用户控件内部触发自定义路由事件时,如何使用 CallMethodAction 调用视图模型内部的方法?

我有一个带有注册路由事件的 UserControl:

我从用户控件触发这个路由事件,如下所示:

我将此用户控件嵌入到我的主视图中,如下所示:

并且我想通过在触发此事件时从我的 Viewmodel 调用方法来处理自定义路由事件。

我一开始试过这个:

但这需要我反对 MVVM,因为处理程序方法 (VisualChartRangeChanged) 将放置在视图中而不是视图模型中。

然后我尝试了这个:

但是没有调用事件处理程序方法(MyMethod)。

有人可以提供一个例子来说明这是如何完成的吗?

谢谢。


已编辑

所以我修改了代码如下:

我不仅看到了这个:http: //i.stack.imgur.com/xR9DY.jpg

但即使它编译尽管显示的通知,我得到这个内部异常:

{"'ChartBehavior.OnVisualChartRangeChanged' 不是属性 'EventName' 的有效值。"}

是否有更好的技术通过调用主视图的视图模型中的处理程序方法来处理来自用户控件的路由事件?

0 投票
1 回答
961 浏览

c# - 如何从 ViewModel 适当地在 View 中运行触发器?

在 ViewModel 中引发事件后,我想在我的视图中执行操作。我在这里找到了解决方案,但似乎很复杂。没有内置机制吗?我还阅读了有关在 ViewModel 中提高 RoutedEvent 的信息,但这种方法需要 ViewModel 知道接收器的类型——它是否符合 MVVM 模式?

编辑 :

更具体地说,我需要从 ViewModel 运行下面提到的动画:

起初我想在 page.triggers 中定义 eventTrigger,但它需要 routedEvent。你有什么建议吗?

0 投票
1 回答
1039 浏览

wpf - 如何覆盖 TextBox 上的 PreviewKeyDown?

我在我制作的控件内的 TextBox 上有一个 PreviewKeyDown 事件的处理程序,它检查用户是否按下了向下键。当控件位于布局容器(如网格)内时,事件处理程序正确处理按键。但是,如果我将控件放在 DataGrid 的 DataGridTempalteColumn 中,则控件不会执行我需要它执行的操作。

我认为问题在于,因为 PreviewKeyDown 采用隧道策略,所以主机 DataGrid 可以在我的控件之前处理向下箭头键按下。对于向下箭头,DataGrid 将焦点移至下一行。DataGrid 似乎没有将 IsHandled 设置为 true,因为事件最终由我控制,但它确实在事件上做了自己的事情,这对我来说破坏了事情。

问题不在于 DataGrid,而在于我的控件具有来自 TextBox 的隧道 PreviewKeyDown 事件。我正在寻找一种方法来覆盖 TextBox 上的这个默认事件。也许我可以对附加行为做些什么?也许我需要从 TextBox 继承然后覆盖?到目前为止,我还没有找到任何表明如何处理这种情况的东西。

以下是这个问题的原文,没有得到任何答案

我在使用作为 DataGridTemplateColumn 中的 DataTemplate 制作的自定义自动完成文本框时遇到了困难。

acttextbox 类派生自用户控件,并具有事件处理程序来响应某些按键,如下所示

目的是当显示自动完成弹出窗口时,按下和向上允许用户导航其内容。当控件放置在布局容器的层次结构中时,这将按预期工作;但是,当它是数据网格中单元格的一部分时,预期的行为就会丢失。看起来 DataGrid 使用 previewKeyDown 来应用它自己对向下或向上箭头的解释,虽然它没有将事件设置为已处理,但当事件到达我的控制焦点时,它会丢失,并且不同的行是选择。

我在网上查了一遍,找不到任何关于如何处理这个问题的线索。当然,我已经看到 DataGridTemplateColumns 中的控件处理各种输入,但是它们是如何完成这些的,我不知道。

0 投票
1 回答
4161 浏览

wpf - 为什么 PreviewMouseLeftButtonDownEvent 中的 Handled 属性会影响 ClickEvent?

考虑为按钮添加 ClickEvent- 和 PreviewMouseLeftButtonDown-Handler

单击按钮时,首先会触发 PreviewMouseLeftButtonDown,然后触发 Click-Event。

如果您e.Handled = true在 Preview...-Event 中设置,则不再处理 Click-Event。

但是,现在让我们考虑一下 MouseLeftButtonDownEvent。
首先,这个事件的路由策略是直接的。也就是说,每次控制都会重新加注。相反,Preview...-Event 是隧道式的,Click-Event 是冒泡的。
其次,添加 MouseLeftButtonDownEventHandler 仅在注册处理程序时才会成功,以便甚至为已处理的事件调用它,如以下代码摘录所示。

我编写了一个测试应用程序,有一个按钮,并为每个事件添加了一个处理程序。当调用事件处理程序时,它会将一些信息写入文本块。

  • 当我单击该按钮时,将调用所有三个事件处理程序。
  • 当我添加e.Handled = true到 Preview...-EventHandler 时,只会调用此事件处理程序。甚至 Mouse...-EventHandler 也没有被提升,尽管我已经设置UIElement.AddHandler handledEventsToo为 true。
  • 当我添加e.Handled = true到 Mouse...-EventHandler 时,会调用所有三个事件处理程序。

这对我来说没有任何意义。Mouse...-EventHandlers 不会影响 Click-EventHandlers,但 Preview...-EventHandlers 会影响 Mouse...- 和 Click-EventHandlers。
甚至“强制”处理鼠标事件失败...-EventHandler。

实际上,我从没想过不同类型的事件处理程序会相互影响。我的理解是,如果我有一个 Preview...-Event 和一个 Click-Event,它们是独立的。

那么,我错过了什么?


这是非常简单的示例代码:

XAML:

代码隐藏:

0 投票
2 回答
61 浏览

javascript - 淘汰赛中的路由事件?

是否有任何可用的调整来使 Knockout 支持路由事件?

在我的特殊情况下,我想在我的视图的根虚拟机中处理上下文菜单事件,并让任何嵌套的虚拟机设置一个上下文菜单触发器,如下所示:

如果OnContextMenu-handler 没有在当前 vm 上定义,它应该将事件路由到它的 parent-vm,依此类推,直到找到处理程序。

目前我必须这样做(这很容易出错)

还是有其他方法可以做到这一点?

0 投票
1 回答
880 浏览

c# - 银光;在鼠标悬停时更改网格的背景

只是我想在鼠标进入时更改网格的背景颜色(在 Silverlight 中)并在鼠标离开时重置它。所以我尝试了不同的方法,但没有成功。这是我尝试过的:

1:使用事件触发器:

这不起作用并说:

成员“IsMouseOver”无法识别或无法访问

2. 使用 Style.Triggers

我尝试在 Style 中设置一些简单的触发器,TargetType="Grid"但在 Silverlight 中似乎无法Style.Triggers在 XAML 中进行。这是代码:

但它说:

在“样式”类型中找不到可附加属性“触发器”。

3.使用交互库

我也使用了Interactivity.dll 和interaction.dll,但它们也不起作用。

当鼠标进入 Silverlight 时,任何人都可以帮助如何更改网格背景?

0 投票
2 回答
254 浏览

c# - WPF RoutedEventHandler 不适用于内容

我对 c# WPF routedevent 有问题。此代码工作正常:

但是当我将 myLabel 放在 ToggleButton 的内容中时,routedeventhandler(myLabel_Click) 没有捕获 Oma 事件(我调试了它):

那么为什么 ToggleButton 会阻止我的 routedevent 呢?

编辑:代码工作正常,但当我将 myLabel 放入 ToggleButton 的内容时,它会产生麻烦。
MyLabel 中的 OmaEvent 看起来像这样:

如果我把它放在 ToggleButton 中,OmaEvent 永远不会引发。如果我不把它放在 ToggleButton 中,它就可以工作。

0 投票
1 回答
772 浏览

wpf - WPF 处理 Thumb 上的双击事件并将其作为另一个控件上的新事件引发

我尝试了一种没有运气的行为

行为:

XAML:

任何帮助表示赞赏

0 投票
1 回答
188 浏览

wpf - F# 中的自定义路由事件

我正在尝试翻译此 C# 代码。到目前为止我的尝试:

主窗口.xaml

单击按钮不会启动动画。

更改代码RoutedEvent="funk:MyButtonSimple.Tap"RoutedEvent="GotFocus"给出一个工作示例(Button.Click 被覆盖)。

任何想法我做错了什么?

0 投票
1 回答
188 浏览

wpf - 使用 XAML 标记的 F# 事件处理程序

既然我有一个自定义路由事件,我如何在 XAML 中指定一个处理程序?

允许:

  • UIElements 来处理冒泡或隧道 RoutedEvents,而不仅仅是控件引发它们
  • 使用隐式样式,无需为特定类型的每个 UIElement 连接事件
  • 根据 ViewModel 中的逻辑更改处理程序
  • 没有代码隐藏的视图