The problem is that the Template needs to know if what it is being applied to has a MouseEnter. Unfortunately even by applying your x:Type to the template, the xaml compiler doesn't have enough to go on.
I have done something similar before in getting the ResourceDictionary to recognise the porepotiesproperties of what I'm templating to and it looks like I used a style to get around it. Full code in http://winchrome.codeplex.com/SourceControl/latest#WinChrome/UI/VS2012ResourceDictionary.xaml.
<ResourceDictionary ... > <Style x:Key="CloseButtonStyle" TargetType="{x:Type Button}" > ... <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Button}"> <Border x:Name="bd" ....> .... </Border> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True" SourceName="bd"> <Setter Property="Background" TargetName="bd" Value="{DynamicResource {x:Static SystemColors.ControlLightLightBrushKey}}"/> ... </Trigger> <Trigger Property="IsPressed" Value="True"> <Setter Property="Background" TargetName="bd"> ... </Setter> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> However you want to then bind your handler to a method on your objectDataPresenter via a {StaticResource ...} which I'm not sure that you can. Instead you might be better to instead bind onto the DataContext using a normal binding {Binding Path=...}, I think you might still be able to provide the DataContext via the {StaticResource.. }.