参考我的旧问题 WPF How to assign the same event lambda expression to two different elements
我现在的需求略有不同。 我必须使用相同的lambda动作订阅不同类型的事件:
EventHandler action = (sender2,args) =>
{
var cmbChanged = sender2 as ComboBox;
//...check...
};
cmb.DropDownClosed += action;
cmb.PreviewKeyUp += action; // <----- compiler error here
但是编译器正确地说动作是System.EventHandler
,而我需要System.Window.Input.KeyEventHandler
。
简而言之,当您点击鼠标并关闭组合以及通过键入选择值时,我必须检查某些条件。
答案 0 :(得分:2)
由于委托类型不同,您不能 assign 直接添加它。但你可以简单地转发它:
cmb.DropDownClosed += action;
cmb.PreviewKeyUp += (sender, e) => action(sender, e);
由于e
类型为KeyEventArgs
,源自EventArgs
,因此您可以将其传递给action
。