2009-03-30 6 views

Répondre

2

Vous pouvez utiliser la commande pour cela. Demandez aux Button s dans la DataTemplate exécuter Command s spécifiques:

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

Ensuite ont chaque vue qui utilise cette DataTemplate poignée du Command:

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

EDIT après les commentaires: Une fois que vous avez créé un code -behind pour votre ResourceDictionary selon these instructions, vous pouvez simplement connecter les événements de la manière habituelle:

En MyResources.xaml:

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

Puis, en MyResources.xaml.cs:

private void _listBox_ItemSelected(object sender, EventArgs e) 
{ 
    ... 
} 
+0

Alors, comment voulez-vous mettre un peu des événements dans le code derrière? Et si j'utilise ResourceDictionary (qui n'a pas de code derrière le fichier) et que je veux faire référence à un gestionnaire dans la page ResourceDictionary elle-même. – Shimmy

+0

Vous pouvez facilement avoir un fichier code-behind pour un ResourceDictionary. Voir http://stackoverflow.com/questions/92100/is-it-possible-to-set-code-behind-a-resource-dictionary-in-wpf-for-event-handli –

+0

1) veuillez modifier le 2ème extrait concernant la façon d'adresser l'événement à un gestionnaire local. 2) Qu'est-ce que MyCommands, une déclaration? – Shimmy

0

Si vous utilisez des événements et non des commandes, puis dans votre gestionnaire d'événements Click il suffit d'écrire

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