i dont know if this applies to you but i had a similar case.
I wanted to use MouseDown event on every labels of my ListBox.
So here's what i did : I setted the ListBox.ItemTemplate to a ContentPresenter.
Then i used MouseDown event on that ContentPresenter. I setted the ContentPresenter's ContentTemplate
to the DataTemplate of my label and it worked well, thus separating my DataTemplate from my MouseDown event.
<ListBox
ItemsSource="{Binding}"
>
<ListBox.ItemTemplate>
<DataTemplate>
<ContentPresenter
ContentTemplate="{StaticResource myLabelTemplate}"
MouseDown="Event">
</ContentPresenter>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Sorry for my bad english ;)