Нужна помощь в обработке событий DataTemplate в файле Application.xaml - PullRequest
2 голосов
/ 30 марта 2009

В моем приложении есть шаблон данных с несколькими кнопками. Я хочу, чтобы даже обработчик этих кнопок запускался на текущей странице (я использую этот шаблон на многих страницах), а не в файле Application.xaml.vb / cs, поскольку мне нужны разные действия на каждой странице.

Надеюсь, я ясен.

Ответы [ 2 ]

2 голосов
/ 30 марта 2009

Вы можете использовать командование для достижения этой цели. Пусть Button s в DataTemplate выполнит определенные Command s:

<Button Command="{x:Static MyCommands.SomeCommand}"/>

Затем пусть каждое представление, которое использует DataTemplate, обрабатывает Command:

<UserControl>
    <UserCommand.CommandBindings>
         <CommandBinding Command="{x:Static MyCommands.SomeCommand}"
                         Executed="_someHandler"/>
    </UserCommand.CommandBindings>
</UserControl>

РЕДАКТИРОВАТЬ после комментариев: После того, как вы создали код для своего ResourceDictionary согласно этим инструкциям , вы можете просто связать события обычным способом:

В MyResources.xaml:

<ListBox x:Key="myListBoxResource" ItemSelected="_listBox_ItemSelected"/>

Затем в MyResources.xaml.cs:

private void _listBox_ItemSelected(object sender, EventArgs e)
{
    ...
}
0 голосов
/ 09 июня 2015

Если вы используете события, а не команды, то в вашем Click обработчике событий просто напишите

private void Button_Click(object sender, RoutedEventArgs e)
{
    var dataItem = (FrameworkElement)sender).DataContext;
    // process dataItem
}
...