【发布时间】:2011-06-15 20:33:23
【问题描述】:
我想知道如何找到我的事件所附加的方法的名称。
我有活动的eventInfo
EventInfo eventInfo = elemento.GetType().GetEvent("Click");
而且我知道附加事件的元素。
FrameworkElement elemento = target.TargetObject as FrameworkElement;
获得方法名后,我就可以使用这个委托了。
Delegate methodDelegate = Delegate.CreateDelegate(eventInfo.EventHandlerType, parentClass, "? ? ? ?");
我有一个标记扩展类:
[MarkupExtensionReturnType(typeof(FrameworkElement))] [内容属性(“内容”)] 公共类 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 中调用的方法的名称。但我无法通过代码获取它。
有什么办法吗?
【问题讨论】: