Я хотел бы знать, как найти имя метода, к которому прикреплено мое событие.
У меня есть eventInfo события
EventInfo eventInfo = elemento.GetType().GetEvent("Click");
, и я знаю элементчто событие как прикрепленное.
FrameworkElement elemento = target.TargetObject as FrameworkElement;
После того, как я получу имя метода, я смогу использовать этот делегат.
Delegate methodDelegate = Delegate.CreateDelegate(eventInfo.EventHandlerType, parentClass, "? ? ? ?");
У меня есть класс markupextension:
[MarkupExtensionReturnType (typeof (FrameworkElement))]] [ContentProperty ("content")] открытый класс InsereSom: MarkupExtension {
public InsereSom()
{ }
[ConstructorArgument("Ligado")]
public bool Ligado
{
get;
set;
}
[ConstructorArgument("Evento")]
public RoutedEvent Evento
{
get;
set;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
IProvideValueTarget target = (IProvideValueTarget)serviceProvider.GetService(typeof(IProvideValueTarget));
FrameworkElement elemento = target.TargetObject as FrameworkElement;
RoutedEventHandler metodo = new RoutedEventHandler(EventoInsereSom);
elemento.AddHandler(Evento, metodo);
EventInfo eventInfo = elemento.GetType().GetEvent("Click");
FrameworkElement parentClass = (MainWindow)((Grid)elemento.Parent).Parent;
Delegate methodDelegate = Delegate.CreateDelegate(eventInfo.EventHandlerType, parentClass, "Button_Click");
eventInfo.RemoveEventHandler(elemento, methodDelegate);
eventInfo.AddEventHandler(elemento, methodDelegate);
return new System.Windows.Controls.Label();
}
public void EventoInsereSom(object sender, RoutedEventArgs e)
{
MessageBox.Show("Hello Extension Markup");
}
}
и этот код Xaml
Я хотел бы сначала поместить мое событие в класс разметки.Перед событием в коде позади.Для этого мне нужно имя метода, который мой компонент вызывает при вызове xaml.Но я не могу получить это по коду.
Есть ли способ сделать это?