2011-01-19 5 views
2

question В этом я спросил о добавлении TabItems динамически в TabControl в ItemsSource взяты из ObservableCollection<Village> .. Мой вопрос, если добавляется кнопка любой TabItem, эта кнопка будет иметь DataContext своего контейнера TabItem, как я могу реализовать событие Click для этой кнопки?МОФ нажатие кнопки событие

ответ

7

Если вы добавили Button в DataTemplate, то по вашему методу Button_Click вы можете легко получить «datacontext» Village.

void Button_Click(object sender, RoutedEventArgs e) 
    { 
     Village clickedVillage = ((Button)sender).DataContext as Village; 
     //Do whatever you want to do with the Village 
    } 

Но опять же, вышеупомянутое решение - не лучший способ решить эту проблему. Шаблон MVVM ожидал бы ICommand в вашей Деревне (или его контейнерный класс), и вы привяжете эту команду к свойству Button.Command, чтобы вообще не было никакого кода. Или, другими словами, ваш XAML будет более чистым, и ViewModel станет более автономным с точки зрения свойств и действий.

+0

OOOhhh это право, спасибо jobi ... –

Смежные вопросы