2009-08-04 4 views
3

私はすべてのトリガーを実行する1つのスタイルを取得しようとしています。これは私が持っているものですが、SoundPlayerActionが発射されていません。WPF - なぜこのEventTriggerは機能しませんか?

<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> 

答えて

17

を、私は、このXAMLをテストし、唯一の問題は、あなたのするRoutedEventが発射されていないということです。 Border.MouseDownは間違いなく動作しません。アイテムが選択されているとき(それが何をしようとしているのか)にサウンドを再生する場合は、GotFocusイベントを試してみてください。

だから、であるためにあなたのEventTriggerを変更します。私にとって

<EventTrigger RoutedEvent="ListBoxItem.GotFocus"> 

を、働いて、音を再生し始めています。

+0

うわー!それで、ありがとう! –

関連する問題