在wpf中单击按钮时播放wav声音

时间:2011-05-11 10:47:14

标签: wpf

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

我找到了1个单击按钮时播放声音的代码。

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

我知道这不是正确的解决方案,所以请告诉我是否有其他解决方案,becoz我必须将这3行写入每个按钮点击事件及其繁琐的工作。

请帮助解决这个问题。

等待回复...

提前致谢

1 个答案:

答案 0 :(得分:22)

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

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

有关为何不在事件触发器中使用Button.Click事件的讨论,请参阅here。基本上,问题是,Button.Click事件是冒泡的事件,事件触发器将在执行正常点击处理程序中的代码后执行,即声音将有延迟,如果你的事件处理程序做了一些需要一些时间的事情。