【发布时间】:2015-09-18 04:06:11
【问题描述】:
我在 WPF 应用程序中创建了自己的 Button User 控件。
在此,我试图在另一个事件上引发一个附加多个事件处理程序的事件。
我为视图和业务逻辑 (MVVM) 附加了多个带有“MouseUp”事件的事件处理程序。我只想用“Enter”和“SpaceBar”在“KeyUp”上触发所有附加“MouseUp”事件的处理程序
这是我用来在“KeyUp”上引发“MouseUp”事件的示例代码,如果键是输入或空格
void Button_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Space || e.Key == Key.Enter)
{
RaiseEvent(new MouseButtonEventArgs(Mouse.PrimaryDevice, 0, MouseButton.Left)
{
RoutedEvent = Mouse.MouseUpEvent,
Source = this,
});
}
}
不确定。我可能错了。但它对我有用。但是,并非在所有情况下。
在某些情况下,事件未按预期引发。
在我的进一步调查中,我看到按键事件被触发。但是在某些对象中没有引发“MouseUp”事件中的事件处理程序。
有什么优雅的方法可以满足我的需求。
【问题讨论】:
-
与其试图从另一个不相关的事件中引发一个事件,不如将处理逻辑提取到一个方法中并从两个处理程序中调用它
-
这听起来像是the XY Problem 的案例,询问您尝试的解决方案而不是实际问题。您要在这里解决的实际问题是什么?