C# 为什么赢了';这声音难道不停止播放吗?

C# 为什么赢了';这声音难道不停止播放吗?,c#,wpf,C#,Wpf,我编写了这段代码,以便用户可以在我的应用程序中静音或取消静音 private void VolumeButton_Click(object sender, RoutedEventArgs e) { if(Muted==false) { Muted = true; } if (Muted == true) { Muted = false; } } 我编写了如下soundplayer方法: public void p

我编写了这段代码,以便用户可以在我的应用程序中静音或取消静音

private void VolumeButton_Click(object sender, RoutedEventArgs e)
{
    if(Muted==false)
    {
        Muted = true;
    }

    if (Muted == true)
    {
        Muted = false;
    }
}
我编写了如下
soundplayer
方法:

public void playSound(string path)
{
    var p1 = new System.Windows.Media.MediaPlayer();
    if (Muted == false)
    {
        p1.Open(new Uri(path, UriKind.Relative));
        p1.Play();
    }
}

如果我单击“静音”按钮,应用程序不会在意,它仍会播放声音,好像什么都没发生过一样。

如评论中所述(由BradleyDotNET提供),问题在您的
VolumeButton\u click
方法中。两个if语句都在执行中,这意味着
已静音
将始终为false:

if (Muted == false)
{
    Muted = true;
}

// Muted now equals true, regardless.
if (Muted == true)
{
    Muted = false;
}
您需要的是
if/else if
方法:

if (Muted == false)
{
    Muted = true;
}
else if (Muted == true)
{
    Muted = false;
}

逐步完成调试器。选择播放声音时,
静音的值在哪里设置?在
playSound
方法之前还是之后?(我对这一点的理解有点不准确,请容忍我)如果
mute
属性是
System.Windows.Media.MediaPlayer()的一部分
,当您创建一个新的
MediaPlayer
静音从何而来时,属性很可能被默认为
true
?我会检查以确保当您在VolumeButton_Click()中设置此变量时,它与您在playSound()中检查的变量相同,您的单击处理程序总是将mute设置为false。您应该将整个内容替换为
Muted=!沉默的。然而,仅仅更新一个变量并不会停止已经播放的声音播放。谢谢blorgbeard!我不需要它来停止任何已经在运行的声音,我只是希望它在静音为真后停止播放新的声音。这解决了问题:)顺便说一句,为什么以前的点击处理程序总是将mute设置为false?读取它,再次读取它。。。在第二个
if
之前,您需要一个
else
。两个街区每次都跑。简单使用!避免了那个错误。