public AudioPlayer() { InitializeComponent(); Rewind_Button.Opacity = 0; FastForward_Button.Opacity = 0; RewindButton_Transform.TranslateX = 44; FastForwardButton_Transform.TranslateX = -44; Position_Slider.AddHandler(PointerReleasedEvent, new PointerEventHandler((s, e) => PositionChanged?.Invoke(this, new PositionChangeEventArgs(true, Player.Position))), true); GlobalKeyNotifier.KeyDown += OnKeyDown; GlobalKeyNotifier.KeyUp += OnKeyUp; }
public CustomPlayerElement() { this.InitializeComponent(); _configService = Ioc.Default.GetRequiredService <ConfigurationService>(); _configService.PropertyChanged += ConfigService_PropertyChanged; WeakReferenceMessenger.Default.Register <CustomPlayerElement, string, string>(this, nameof(PlaybackListManageService), async(ctor, mes) => { if (mes == "CurrentPlayChanged") { var manageService = Ioc.Default.GetRequiredService <MusicFileManageService>(); Cover_Image.Source = await manageService.GetCurrentPlayItem()?.GetCoverAsync(); ctor.Position_Slider.Maximum = _mediaPlayer.PlaybackSession.NaturalDuration.TotalMinutes; ctor._mediaPlayer.PlaybackSession.PlaybackRate = _configService.PlaybackRate; PlayList_ListView.ItemsSource = manageService.GetPlaybackList(); var item = Ioc.Default.GetRequiredService <PlaybackListManageService>().CurrentPlayItem; if (item != null) { PlayList_ListView.SelectedIndex = item.TrackId; } if (ctor._mediaPlayer.PlaybackSession.PlaybackState != MediaPlaybackState.Playing) { ctor._mediaPlayer.Play(); } } if (mes == "ItemOpened") { ctor.Position_Slider.Maximum = _mediaPlayer.PlaybackSession.NaturalDuration.TotalMinutes; ctor._mediaPlayer.PlaybackSession.PlaybackRate = _configService.PlaybackRate; } }); WeakReferenceMessenger.Default.Register <CustomPlayerElement, string, string>(this, "MediaPlayer", (ctor, mes) => { string[] split = mes.Split(':'); string key = split[0]; string value = split[1]; if (key == "RequestChangePosition") { ctor._isPressSlider = true; ctor.Position_Slider.Value = double.Parse(value); ctor.ReleasePositionSlider(); } }); _mediaPlayer = Ioc.Default.GetRequiredService <MediaPlayer>(); _mediaPlayer.Source = Ioc.Default.GetRequiredService <PlaybackListManageService>().GetPlaybackList(); _mediaPlayer.Volume = _configService.Volume; _mediaPlayer.IsLoopingEnabled = _configService.LoopingMode == LoopingModeEnum.Single; _mediaPlayer.PlaybackSession.PlaybackStateChanged += PlaybackSession_PlaybackStateChanged; _mediaPlayer.PlaybackSession.PositionChanged += PlaybackSession_PositionChanged; Position_Slider.AddHandler(PointerPressedEvent, new PointerEventHandler((s, e) => PressPositionSlider()), true); Position_Slider.AddHandler(PointerReleasedEvent, new PointerEventHandler((s, e) => ReleasePositionSlider()), true); Position_Slider.GotFocus += (s, e) => PressPositionSlider(); Position_Slider.LostFocus += (s, e) => ReleasePositionSlider(); }