2010-03-10 35 views
2

我想做一個擴展方法它用按鈕填充一個堆疊面板。如何傳遞一個鼠標點擊方法作爲參數?

爲了做到這一點,我必須通過鼠標點擊處理程序

什麼類型的mouseClickHandler參數必須在這裏?

我知道這有點像這些,但他們都不起作用:

  • delegate
  • Func<object, RoutedEventArgs>
  • Action<>

代碼:

public static void FillMenuWithPages(this StackPanel spMenu, string menuIdCode, 
      PagingManager pagingManager, ??????? mouseClickHandler) 
{ 
    var menuPageItems = PageItems.GetPageItemsWithMenu(menuIdCode); 
    spMenu.Children.Clear(); 
    foreach (var pageItem in menuPageItems) 
    { 
     var button = new Button(); 
     button.Content = pageItem.Title; 
     button.Margin = new Thickness { Right = 3 }; 
     button.Tag = pageItem.IdCode; 
     button.Cursor = Cursors.Hand; 
     button.Click += new RoutedEventHandler(mouseClickHandler); 
     if (pageItem.IdCode == pagingManager.CurrentPageItemIdCode) 
      button.IsEnabled = false; 
     spMenu.Children.Add(button); 
    } 
} 

我會這樣稱呼它:

QuickMenu.FillMenuWithPages("quick", PagingManager, Menu_Button_Click); 

,這就是鼠標左撇子:

void Menu_Button_Click(object sender, RoutedEventArgs e) 
{ 
    string pageItemIdCode = ((FrameworkElement)sender).Tag.ToString(); 
    PagingManager.SwitchPage(pageItemIdCode); 
} 

回答

1

將它作爲RoutedEventHandler像這樣:

public static void FillMenuWithPages(this StackPanel spMenu, string menuIdCode, 
      PagingManager pagingManager, RoutedEventHandler mouseClickHandler) 
+0

完美,這就是我需要的,謝謝 – 2010-03-10 12:53:20

1

這取決於是否這是一個WPF或Winforms應用程序。對於WPF,它將是RoutedEventHandler(如ButtonBase.Click文檔中所述)。對於winforms,它是EventHandler(如在Control.Click文檔中所見)。