WPF - 为什么这个EventTrigger不工作?

时间:2009-08-04 16:05:13

标签: wpf eventtrigger

我正试图让一种风格继续执行我的所有触发器。这就是我所拥有的,但SoundPlayerAction没有触发:

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

1 个答案:

答案 0 :(得分:17)

我测试了这个XAML,唯一的问题是你的RoutedEvent没有被触发。 Border.MouseDown绝对不会起作用。如果您想在选择项目时播放声音(这是您尝试做的事情),请尝试使用GotFocus事件。

因此,将EventTrigger更改为:

<EventTrigger RoutedEvent="ListBoxItem.GotFocus">

对我来说,这种工作和声音开始播放。