2013-10-02 72 views
0

我有一堆用戶控件的按鈕,它們存儲在一個列表框中。現在,他們都將他們的按鈕事件傳遞給主腳本,並打印出「單擊按鈕」,但如果它打印出「按鈕D被單擊」,那麼會更好,因爲我需要精確地存儲數組中單擊的按鈕。如何判斷點擊了哪個WPF UserControl?

回答

1

事件調用中的sender參數指的是發送按鈕。

private void btn1_Click(object sender, RoutedEventArgs e) 
{ 
    Button button = (Button)sender; 
} 

如果第一個沒有這種可能的工作:

private void btn1_Click(object sender, RoutedEventArgs e) 
{ 
    Button button = (Button)e.OriginalSource; 
} 

這裏有一個更通用的方法,如果你只想要一個ListBoxItem

private void btn1_Click(object sender, RoutedEventArgs e) 
{ 
    object context = (e.OriginalSource as FrameworkElement).DataContext; 
    var lbi = lb.ItemContainerGenerator.ContainerFromItem(context) as ListBoxItem; 
} 

看到帖子: How to select ListBoxItem upon clicking on button in Template? How to retrieve sender in click handler from toolbartray or other control in wpf?

+0

它不是寄件人。它應該是EventArgs中的OriginalSource – LadderLogic

+0

有沒有什麼辦法讓用戶控制按鈕在裏面?我實際上不需要按鈕,因爲我想要用戶控件的信息。 – Coat

1

可以不是你使用按鈕和引用的CommandParameter。

相關問題