2009-03-30 3 views

Antwort

2

Sie können dies mithilfe von Befehlen erreichen. Lassen Sie die Button s in den DataTemplate spezifischen Command s ausführen:

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

Dann jede Ansicht, die die DataTemplate die Command Griff verwendet:

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

EDIT nach Kommentaren: Sobald Sie einen Code erstellt haben -behind für Ihre ResourceDictionary wie these instructions, können Sie einfach Ereignisse in der üblichen Weise verbinden:

In MyResources.xaml:

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

Dann in MyResources.xaml.cs:

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

Dann, wie würden Sie einige Set der Ereignisse im Code dahinter? Und was, wenn ich ResourceDictionary verwende (das keinen Code hinter der Datei hat) und ich möchte auf einen Handler in der ResourceDictionary Seite selbst verweisen. – Shimmy

+0

Sie können leicht eine Code-Behind-Datei für ein ResourceDictionary haben. Siehe http://stackoverflow.com/questions/92100/is-it-possible-to-set-code-behind-a-resource-dictionary-in-wpf-for-event-handli –

+0

1) Bitte bearbeiten Sie das 2. Snippet wie das Ereignis an einen lokalen Handler adressiert wird. 2) Was ist MyCommands, eine Deklaration? – Shimmy

0

Wenn Sie Ereignisse und Befehle nicht verwenden, dann in Ihrem Click Ereignishandler schreiben nur

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