WP Bool没有坚持

时间:2014-10-22 12:37:37

标签: c# windows-phone-8 visual-studio-2013

我有一个音乐播放应用程序,我正在尝试创建一个重复功能。 如果我手动设置bool,每次都应该执行,但是如果我使用主页面上的按钮则没有。

MainPage.xaml.cs中

public static bool repeat
    {

   get {return AudioPlaybackAgent1.AudioPlayer.repeaton;}
   set {repeat = value;}
    }

    private void RepeatButton_Click(object sender, RoutedEventArgs e)
    {                     
        if (repeat == false)
        {             
            System.Diagnostics.Debug.WriteLine(AudioPlaybackAgent1.AudioPlayer.repeaton);               
            AudioPlaybackAgent1.AudioPlayer.repeaton = true;
            var brush = new ImageBrush();
            brush.ImageSource = new BitmapImage(new Uri("/Images/repeaton.png", UriKind.Relative));
            RepeatButton.Background = brush;
        }
        else if (repeat == true)
        {
            System.Diagnostics.Debug.WriteLine(AudioPlaybackAgent1.AudioPlayer.repeaton);
            AudioPlaybackAgent1.AudioPlayer.repeaton = false;
            var brush = new ImageBrush();
            brush.ImageSource = new BitmapImage(new Uri("/Images/repeatoff.png" UriKind.Relative));
            RepeatButton.Background = brush;
        }
    }

Audio Player.cs

  public static bool repeaton = false;

    protected override void OnPlayStateChanged(BackgroundAudioPlayer player, AudioTrack track, PlayState playState)
    {
        ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("liveTile".ToString()));
        switch (playState)
        {
            case PlayState.TrackEnded:
                if (repeaton == false)
                {
                    if (player.Track != null)
                        MyPlayer.currentTrackNumber = FindTrack(player.Track);
                    player.Track = MyPlayer.GetNextTrack();
                }
                else if (repeaton == true)
                {
                    if (player.Track != null)
                        MyPlayer.currentTrackNumber = FindTrack(player.Track);
                    player.Track = MyPlayer.GetRepeatTrack();
                }
                break;

调试器显示值已更改,但播放器忽略更改。 如果我手动设置repeaton工作正常,对于我的生活我不能让它工作,请帮助。

1 个答案:

答案 0 :(得分:1)

这是错误的(似乎根本不应该工作):

public static bool repeat
{
    get {return AudioPlaybackAgent1.AudioPlayer.repeaton;}
    set {repeat = value;} //You set value to *this* property???
}

相反,您应set使用相同的值,例如:

public static bool repeat
{
    get {return AudioPlaybackAgent1.AudioPlayer.repeaton;}
    set {AudioPlaybackAgent1.AudioPlayer.repeaton= value;}
}

如果您打算这样做,请在任何地方使用repeat使用AudioPlaybackAgent1.AudioPlayer.repeaton

(或放弃repeat并仅使用AudioPlaybackAgent1.AudioPlayer.repeaton)。