2009-08-04 7 views
3

J'essaie d'obtenir un style qui exécute tous mes déclencheurs. Voilà ce que j'ai, mais le tir SoundPlayerAction n'est pas:WPF - pourquoi ce EventTrigger ne fonctionne-t-il pas?

<Style x:Key="{x:Type ListBoxItem}" TargetType="ListBoxItem"> 
     <Setter Property="SnapsToDevicePixels" Value="true"/> 
     <Setter Property="OverridesDefaultStyle" Value="true"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ListBoxItem"> 
        <Border Name="Border" Padding="2" SnapsToDevicePixels="true"> 
         <ContentPresenter /> 
        </Border> 
        <ControlTemplate.Triggers> 
         <EventTrigger RoutedEvent="Border.MouseDown"> 
          <SoundPlayerAction Source="/sounds/simpleclick.wav"/> 
         </EventTrigger> 
         <Trigger Property="IsSelected" Value="true"> 
          <Setter TargetName="Border" Property="Background" Value="{StaticResource SelectedBackgroundBrush}"/>         
         </Trigger> 
         <Trigger Property="IsEnabled" Value="false"> 
          <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/> 
         </Trigger>         
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

Répondre

17

J'ai testé cette XAML et le seul problème est que votre RoutedEvent ne se déclenche pas. Border.MouseDown ne va certainement pas fonctionner. Si vous cherchez à jouer un son lorsque l'élément est sélectionné (ce que vous essayez de faire), essayez l'événement GotFocus.

Alors, changer votre EventTrigger être:

<EventTrigger RoutedEvent="ListBoxItem.GotFocus"> 

Pour moi, cela a fonctionné et a commencé à jouer son.

+0

Wow! C'est ce que j'ai fait, merci beaucoup! –

Questions connexes