Это намного проще, чем вы думаете.
Чтобы вызвать событие, когда у вас есть объект EventInfo
, вы можете просто использовать evtInfo.GetRaiseMethod(true).Invoke(...)
Но причина, по которой ваш код дает сбой, заключается в том, что событие ContentControl.MouseLeftButtonUp использует делегат MouseButtonEventHandler , который ожидает аргумент MouseButtonEventArgs
.
Итак, чтобы ваш пример работал, вы можете попробовать следующий код:
var eventInfo = contentControl.GetType().GetEvent("MouseLeftButtonUp", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
var raise = eventInfo.GetRaiseMethod(true);
raise.Invoke(contentControl, new object[] { contentControl, new MouseButtonEventArgs(null, 0, MouseButton.Left) });
Я не уверен, разрешает ли конструктор MouseButtonEventArgs
нулевой MouseDevice, иначе вы можете оставить аргумент как нулевой:
raise.Invoke(contentControl, new object[] { contentControl, null });