Обработка событий приложения.Ресурсы, в которых они используются

#wpf #user-controls #datatemplate

#wpf #пользовательские элементы управления #datatemplate

Вопрос:

У меня Button внутри application.resources DataTemplate :

 <DataTemplate x:Key="contactItem" DataType="{x:Type Model:Contact}">
<Button x:Name="openButton" Style="{StaticResource openButton}"/>
</DataTemplate>
 

Как я могу обработать openButton щелчок UserControl ?

 <ItemsControl ItemSource="{Binding CurrentContacts}" ItemTemplate="{StaticResource contactItem}">
</ItemsControl>
 

Ответ №1:

Вы можете добавить ButtonBase.Click обработчик в ItemsControl .

  <ItemsControl ButtonBase.Click="MyItemsControl_Click">
  </ItemsControl>
 

Внутри кода этого обработчика событий вы можете использовать DataContext свойство e.OriginalSource (оно должно иметь тип Button ) для доступа к объекту, привязанному к данным.

 private void MyItemsControl_Click(object sender, RoutedEventArgs e)
{
    var myDataObject = ((Button)e.OriginalSource).DataContext;
}
 

Комментарии:

1. Верно, в конце концов, для этого и нужна маршрутизация событий.