2017-01-05 1 views
0

Есть ли способ установить кнопку click маршрутизируемого обработчика событий из статического метода класса?C# WPF Установить обработчик события щелчка кнопки из статического метода класса

У меня UserControl пункт «послать Отправить» с помощью кнопки в XAML и двумя аргументами:

public SendButton(string buttonText, string eventHandler) 
     { 
      InitializeComponent(); 
      ButtonBlock.Content = buttonText; 

      // This is what I´ve tried 
      ButtonBlock.Click += (Func<RoutedEventHandler>) typeof(RoutedEvents).GetMethod(eventHandler); 

      // This is what I want to achieve: 
      // ButtonBlock.Click += RoutedEvents.WhatIsYourName(); 
      // But it doesn´t work anyways, because of a missing arguments 
     } 

, а затем статический метод внутри класса

public class RoutedEvents 
    { 
     public static void WhatIsYourName(object sender, TextChangedEventArgs e) 
     { 
      // 
     } 
    } 

И это, как я хотел бы назвать его:

new SendButton("Send", "WhatIsYourName"); 

Спасибо

ответ

3

Конструктор UserControl должен принять RoutedEventHandler в качестве аргумента:

public SendButton(string buttonText, RoutedEventHandler clickHandler) 
{ 
    InitializeComponent(); 

    ButtonBlock.Content = buttonText; 
    ButtonBlock.Click += clickHandler; 
} 

метод обработчик передается в качестве аргумента должны иметь правильную подпись, с RoutedEventArgs в качестве второго параметра:

public class RoutedEvents 
{ 
    public static void WhatIsYourName(object sender, RoutedEventArgs e) 
    { 
     // 
    } 
} 

Затем передать его как это (без круглых скобок):

new SendButton("Send", RoutedEvents.WhatIsYourName); 
Смежные вопросы