在WPF中点击按钮时播放wav声音

12

我希望在整个应用程序中使用按钮的点击事件播放声音。

我找到了一个能够在点击按钮时播放声音的代码。

private void btn_Click(object sender, RoutedEventArgs e)
    {
        MediaPlayer mplayer = new MediaPlayer();
        mplayer.Open(new Uri("ding.wav", UriKind.Relative));
        mplayer.Play();
        //our code...
    }

我知道这不是正确的解决方案,请告诉我是否有其他解决方案,因为我必须将这 3 行代码写到每个按钮点击事件中,这很繁琐。

请帮忙解决这个问题。

等待回复...

提前致谢。

1个回答

24

只需要定义一个在PreviewMouseDown事件中播放声音的样式:

<Style TargetType="Button">
    <Style.Triggers>
        <EventTrigger RoutedEvent="PreviewMouseDown">
            <SoundPlayerAction Source="/ClickingButton;component/click.wav" />
        </EventTrigger>
    </Style.Triggers>
</Style>

参考这里,了解为什么不要在事件触发器中使用Button.Click事件。基本上,问题在于Button.Click事件是一个冒泡事件,事件触发器将会在你正常的单击处理程序代码执行后被执行,也就是说,如果你的事件处理程序执行某些需要时间的操作,声音就会有延迟。


当我把这段代码放在<window.Resources>标签之间时,出现了错误。"无法加载文件或程序集'ClickingButton,Culture=neutral'或其某个依赖项。系统找不到指定的文件。" - Viral Sarvaiya
当然。您需要根据自己的需求进行更改...请参阅此属性的MSDN中的注释:http://msdn.microsoft.com/en-us/library/system.windows.controls.soundplayeraction.source.aspx - Daniel Hilgarth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接