2009-08-04 3 views
3

나는 모든 트리거를 수행하는 한 가지 스타일을 얻으려고합니다. 이것은 내가 가지고있는,하지만 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

와우! 그렇게 해 줘서 고마워! –

관련 문제