我正试图让一种风格继续执行我的所有触发器。这就是我所拥有的,但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>
答案 0 :(得分:17)
我测试了这个XAML,唯一的问题是你的RoutedEvent没有被触发。 Border.MouseDown绝对不会起作用。如果您想在选择项目时播放声音(这是您尝试做的事情),请尝试使用GotFocus事件。
因此,将EventTrigger更改为:
<EventTrigger RoutedEvent="ListBoxItem.GotFocus">
对我来说,这种工作和声音开始播放。