0

buttons这是xaml 中媒体元素的三个标准:

<Button Content="Sound1"
            Click="Button_Click1"
            HorizontalAlignment="Center"  
            VerticalAlignment="Top"/>
    <MediaElement x:Name="PlaySound1"
                    Grid.Row="1"
                    />

    <Button Content="Sound2" 
            Click="Button_Click2"
            HorizontalAlignment="Center"  
            VerticalAlignment="Top" 
            Margin="177,72,177,0"
            Width="126"/>
    <MediaElement x:Name="PlaySound2"
                    Grid.Row="1"
                    />

    <Button Content="Sound3" 
            Click="Button_Click3"
            HorizontalAlignment="Center"
            VerticalAlignment="Top"
            Margin="177,149,177,0"                      
            Width="126" />
    <MediaElement x:Name="PlaySound3"
                    Grid.Row="1"
                    />

这是我使用的简单代码,当我尝试播放第三个按钮时,它不起作用,我单击了buttons所有组合(首先是button2、button3 和button1)但它不起作用。

private void Button_Click1(object sender, RoutedEventArgs e)
{
    PlaySound1.Source = new Uri("sound.wma", UriKind.Relative);
    PlaySound1.Stop();
    PlaySound1.Play();
}

private void Button_Click2(object sender, RoutedEventArgs e)
{
    PlaySound2.Source = new Uri("sound2.wma", UriKind.Relative);
    PlaySound2.Stop();
    PlaySound2.Play();

}

private void Button_Click3(object sender, RoutedEventArgs e)
{
    PlaySound3.Source = new Uri("sound3.wma", UriKind.Relative);
    PlaySound3.Stop();
    PlaySound3.Play();
}

使用具有多种声音的多个按钮的正确方法是什么?

4

2 回答 2

0

默认情况下,当您添加 .Source 时,它​​将播放声音。而且,默认情况下,停止不起作用。在您的初始化中,将 .LoadedBehavior 设置为 Manual 并分配源。

    protected override void OnInitialized(EventArgs e)
    {
        PlaySound1.LoadedBehavior = MediaState.Manual;
        PlaySound2.LoadedBehavior = MediaState.Manual;
        PlaySound3.LoadedBehavior = MediaState.Manual;
        PlaySound1.Source = new Uri("aah-01.wav", UriKind.Relative);
        PlaySound2.Source = new Uri("crowd-groan.wav", UriKind.Relative);
        PlaySound3.Source = new Uri("laugh-01.wav", UriKind.Relative);

        base.OnInitialized(e);
    }

那么你可以拥有

    private void Button_Click1(object sender, RoutedEventArgs e)
    {
        PlaySound1.Stop();
        PlaySound1.Play();
    }
于 2013-09-18T00:43:43.553 回答
0

你可以试试这样的

private void Click(object sender, EventArgs e)
{
Button button = sender as Button;
switch(button.Name)
{
case "sound1":
PlaySound1.Stop();
PlaySound1.Source= new Uri("sound.wma",UriKind.Relative);
PlaySound1.Play();
break;
case "sound2":
PlaySound2.Stop();
PlaySound2.Source= new Uri("sound2.wma",UriKind.Relative);
PlaySound2.Play();
break;
case "sound3":
PlaySound3.Stop();
PlaySound3.Source= new Uri("sound3.wma",UriKind.Relative);
PlaySound3.Play();
break;
}
}
于 2013-09-18T00:46:12.993 回答