【问题标题】:Stop a sound when a ListItem is "de-Selected"当 ListItem 被“取消选择”时停止声音
【发布时间】:2014-01-04 22:57:15
【问题描述】:

我使用本指南制作了一个自定义的 longlistselector 并在选择项目时播放声音。
http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners/Part-15-Playing-a-Sound-when-a-ListItem-is-Selected
一切正常。

现在我正在尝试找到一种方法来停止声音,如果点击相同的项目并且它仍在播放声音,但找不到正确的解决方案。有什么想法吗?

非常感谢。

编辑

现在在播放时点击停止。但是,如果我单击另一个元素,它也会停止。有什么建议吗?请

private void LongListSelector_SelectionChanged(object sender, SelectionChangedEventArgs e)
{                
    LongListSelector selector = sender as LongListSelector;
    // verifying our sender is actually a LongListSelector
    if (selector == null)
        return;

    if (AudioPlayer.CurrentState == System.Windows.Media.MediaElementState.Playing)
    {
        AudioPlayer.Stop();
        selector.SelectedItem = null;
    }
    else
    {
        SoundData data = selector.SelectedItem as SoundData;
        // verifying our sender is actually SoundData
        if (data == null)
            return;
        AudioPlayer.Source = new Uri(data.FilePath, UriKind.RelativeOrAbsolute);
        // resetting selected so we can play the same sound over and over again
        selector.SelectedItem = null;
    }
}

【问题讨论】:

  • 如果您已经解决了您的问题,请添加答案(您也可以回答您自己的问题),然后将其标记为解决方案(绿色勾号)。然后,该答案将从未回答中消失。
  • 不,我还有一个问题,现在在播放时点击声音会停止。但只有当我点击之前点击的同一个项目时,我才需要停止它。任何想法?请

标签: c# windows-phone-8


【解决方案1】:

查看您的代码,您只是在阻止它。这并不难,你只需要记住你之前点击过的内容:

private SounData selected = null;

private void LongListSelector_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
   LongListSelector selector = sender as LongListSelector;
   if (AudioPlayer.CurrentState == System.Windows.Media.MediaElementState.Playing &&
    ((SoundData)selector.SelectedItem == selected))
   {
     AudioPlayer.Stop();
     selector.SelectedItem = null;
   }
   else
   {
     SoundData data = selector.SelectedItem as SoundData;
     // verifying our sender is actually SoundData
     if (data == null)
        return;
     AudioPlayer.Source = new Uri(data.FilePath, UriKind.RelativeOrAbsolute);
     // resetting selected so we can play the same sound over and over again
     selected = data;
     selector.SelectedItem = null;
   }
}

我认为其余的你应该能够弄清楚。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-23
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 2012-07-14
  • 2014-04-21
  • 1970-01-01
相关资源
最近更新 更多