将单击事件从字符串分配给按钮

时间:2013-06-02 08:28:35

标签: windows-phone-7 windows-phone-8

我有一个名为clickEvent的字符串变量,它可以包含不同的字符串,如“buttonAdd_Click”或“buttonSub_Click”或“buttonComp_Click”等。 现在我需要将写入字符串的click事件分配给名为buttonCalc的按钮。

buttonCalc.click + = new RoutedEventHandler(clickEvent)显然不起作用,因为clickEvent是变量而不是方法。

我怎样才能使这件事有效?

由于

1 个答案:

答案 0 :(得分:0)

你可以通过反思来做到这一点:

private void AssignClickEvent(string methodName, Button button)
{
    var method = this.GetType().GetMethod(methodName, System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);

    var ev = button.GetType().GetEvent("Click");

    var handler = method.CreateDelegate(typeof(RoutedEventHandler), this);

    ev.AddEventHandler(button, handler);
}

然后使用方法名称和要分配给它的按钮调用它:

this.AssignClickEvent("ButtonAdd_Click", this.ButtonAdd);

那就是说,你可能想解释一下你为什么这样做,因为它们可能更容易。