private async void Page_Loaded(object sender, RoutedEventArgs e)
        {
            var singers = await Task.Factory.StartNew(() =>
            {
                return(_singerService.GetHotSingersOfCount(10));
            });

            WpSinger.Children.Clear();
            foreach (var singer in singers)
            {
                var ellipse = new Ellipse()
                {
                    Fill   = new ImageBrush((ConstantsUtil.APP_Directory + ConstantsUtil.DefaultSingerHeaderPath).ToImageSource(UriKind.Absolute)),
                    Margin = new Thickness(40, 10, 40, 40)
                };

                var singerBtn = new JmTransparentButton()
                {
                    Content             = singer.Name,
                    Foreground          = new SolidColorBrush(Colors.White),
                    FontSize            = 16,
                    HorizontalAlignment = HorizontalAlignment.Center,
                    VerticalAlignment   = VerticalAlignment.Bottom,
                    Margin = new Thickness(0, 0, 0, 10),
                    Tag    = singer.Id
                };

                singerBtn.MouseEnter += SingerBtn_MouseEnter;
                singerBtn.MouseLeave += SingerBtn_MouseLeave;
                singerBtn.Click      += SingerBtn_Click;

                var grid = new Grid()
                {
                    Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#30FFFFFF")),
                    Width      = 180,
                    Height     = 150,
                    Margin     = new Thickness(0, 0, 15, 15)
                };

                grid.Children.Add(ellipse);
                grid.Children.Add(singerBtn);

                WpSinger.Children.Add(grid);
            }
        }
        private async void Page_Loaded(object sender, RoutedEventArgs e)
        {
            var singers = await Task.Factory.StartNew(() =>
            {
                return(_searchService.Search(MusicRequestType.Singer, _singerName, 1));
            }) as SingerSearchPageResult;

            Panel.Children.Clear();
            singers.Results.ToList()
            .ForEach(s =>
            {
                var ellipse = new Ellipse()
                {
                    Width  = 100,
                    Height = 100,
                    Fill   = new ImageBrush((ConstantsUtil.APP_Directory + ConstantsUtil.DefaultSingerHeaderPath).ToImageSource(UriKind.Absolute))
                };

                var tb = new TextBlock()
                {
                    Text = s.Name
                };

                var btn = new JmTransparentButton()
                {
                    Margin = new Thickness(0, 10, 10, 10),
                    HorizontalContentAlignment = HorizontalAlignment.Center,
                    Content = tb,
                    Tag     = s.Id
                };
                btn.Click += SingerNameBtn_Click;

                var sp = new StackPanel()
                {
                    Margin = new Thickness(20, 10, 20, 50),
                };

                sp.Children.Add(ellipse);
                sp.Children.Add(btn);

                Panel.Children.Add(sp);
            });
        }
        private async void Page_Loaded(object sender, RoutedEventArgs e)
        {
            var albums = await Task.Factory.StartNew(() =>
            {
                return(_searchService.Search(MusicRequestType.Album, _albumName, 1));
            }) as AlbumSearchPageResult;

            Sp.Children.Clear();
            albums.Results.ToList()
            .ForEach(s =>
            {
                var header = new Image()
                {
                    Source = ConstantsUtil.DefaultAlbumHeaderPath.ToImageSource()
                };

                var albumNameBtn = new JmTransparentButton()
                {
                    Content = s.Name,
                    Tag     = s.Id,
                };
                albumNameBtn.Click += AlbumNameBtn_Click;
                var albumNameWp     = new WrapPanel();
                albumNameWp.Children.Add(albumNameBtn);

                var singerNameBtn = new JmTransparentButton()
                {
                    Content = s.SingerName,
                    Tag     = s.SingerId,
                };
                singerNameBtn.Click += SingerNameBtn_Click;
                var singerNameWp     = new WrapPanel();
                singerNameWp.Children.Add(singerNameBtn);

                var publishedDateTb = new TextBlock()
                {
                    Foreground = new SolidColorBrush(Colors.Silver),
                    Text       = s.PublishedTime.ToShortDateString()
                };

                var musicCountTb = new TextBlock()
                {
                    Foreground = new SolidColorBrush(Colors.Silver),
                    Text       = $"{s.MusicCount}首"
                };

                var colDef0 = new ColumnDefinition()
                {
                    Width = new GridLength(0, GridUnitType.Auto),
                };
                var colDef1 = new ColumnDefinition()
                {
                    Width = new GridLength(2, GridUnitType.Star)
                };
                var colDef2 = new ColumnDefinition()
                {
                    Width = new GridLength(1, GridUnitType.Star)
                };
                var colDef3 = new ColumnDefinition()
                {
                    Width = new GridLength(1, GridUnitType.Star)
                };
                var colDef4 = new ColumnDefinition()
                {
                    Width = new GridLength(60, GridUnitType.Pixel)
                };

                var grid = new Grid();
                grid.ColumnDefinitions.Add(colDef0);
                grid.ColumnDefinitions.Add(colDef1);
                grid.ColumnDefinitions.Add(colDef2);
                grid.ColumnDefinitions.Add(colDef3);
                grid.ColumnDefinitions.Add(colDef4);

                grid.Children.Add(header);
                grid.Children.Add(albumNameWp);
                grid.Children.Add(singerNameWp);
                grid.Children.Add(publishedDateTb);
                grid.Children.Add(musicCountTb);

                Grid.SetColumn(header, 0);
                Grid.SetColumn(albumNameWp, 1);
                Grid.SetColumn(singerNameWp, 2);
                Grid.SetColumn(publishedDateTb, 3);
                Grid.SetColumn(musicCountTb, 4);

                Sp.Children.Add(grid);
            });
        }
        private async void LoadNewSongs()
        {
            WpNewSong.Children.Clear();
            var newSongs = await Task.Factory.StartNew(() =>
            {
                return(_musicService.GetLastestMusics(10));
            });

            foreach (var song in newSongs)
            {
                var image = new Image()
                {
                    Width   = 145,
                    Height  = 145,
                    Stretch = Stretch.UniformToFill,
                    Source  = ConstantsUtil.DefaultMusicHeaderPath.ToImageSource(),
                };

                var ceiling = new Rectangle()
                {
                    Name       = "Ceiling",
                    Width      = image.Width,
                    Height     = image.Height,
                    Fill       = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#30000000")),
                    Visibility = Visibility.Hidden
                };

                var playBtn = new JmTransparentButton()
                {
                    Content = new TextBlock()
                    {
                        Text       = "\ue60f",
                        FontFamily = (FontFamily)FindResource("JM"),
                    },
                    Tag   = song.Id,
                    Style = (Style)FindResource("PlayBtn")
                };

                var imageGrid = new Grid()
                {
                    Tag = song.Id
                };
                imageGrid.Children.Add(image);
                imageGrid.Children.Add(ceiling);
                imageGrid.Children.Add(playBtn);

                imageGrid.MouseEnter += ImageGrid_MouseEnter;
                imageGrid.MouseLeave += ImageGrid_MouseLeave;
                imageGrid.MouseUp    += Song_Click;
                playBtn.Click        += Song_Click;

                var tbSong = new TextBlock()
                {
                    Text       = song.Name,
                    Foreground = new SolidColorBrush(Colors.White),
                    FontSize   = 14,
                    Margin     = new Thickness(0, 10, 0, 10)
                };

                var btn = new JmTransparentButton()
                {
                    Content = tbSong,
                    Tag     = song.Id
                };

                btn.Click += Song_Click;

                var tbSinger = new TextBlock()
                {
                    Text       = song.SingerName,
                    Foreground = new SolidColorBrush(Colors.Silver),
                    Tag        = song.SingerId
                };

                tbSinger.MouseUp += Singer_Click;

                var sp = new StackPanel()
                {
                    Width  = image.Width,
                    Height = 250,
                    Margin = new Thickness(0, 20, 15, 0)
                };
                sp.Children.Add(imageGrid);
                sp.Children.Add(btn);
                sp.Children.Add(tbSinger);

                WpNewSong.Children.Add(sp);
            }
        }
        /// <summary>
        /// 初始化页码
        /// </summary>
        /// <param name="totalPageNumber"></param>
        /// <param name="currentPageNumber"></param>
        private void InitPageNumber(int totalPageNumber, int currentPageNumber)
        {
            if (totalPageNumber < currentPageNumber || currentPageNumber <= 0)
            {
                return;
            }
            SpPageNumber.Children.Clear();
            const int MaxPageNumber = 6;


            if (currentPageNumber != 1)
            {
                var previousBtn = new JmTransparentButton()
                {
                    Content = "<"
                };
                previousBtn.Click += PreviousPageBtn_Click;
                SpPageNumber.Children.Add(previousBtn);
            }


            #region 页码显示规则
            if (totalPageNumber <= MaxPageNumber)
            {
                Enumerable.Range(1, totalPageNumber).ToList()
                .ForEach(i =>
                {
                    var btn = new JmTransparentButton()
                    {
                        Content = i
                    };
                    btn.Click += PageNumberBtn_Click;
                    SpPageNumber.Children.Add(btn);
                });
            }
            else if (currentPageNumber < MaxPageNumber - 1)
            {
                Enumerable.Range(1, MaxPageNumber).ToList()
                .ForEach(i =>
                {
                    var btn = new JmTransparentButton()
                    {
                        Content = i
                    };
                    btn.Click += PageNumberBtn_Click;
                    SpPageNumber.Children.Add(btn);
                });
                SpPageNumber.Children.Add(new TextBlock()
                {
                    Text              = " … ",
                    Foreground        = new SolidColorBrush(Colors.White),
                    VerticalAlignment = VerticalAlignment.Center
                });
                var lastBtn = new JmTransparentButton()
                {
                    Content = totalPageNumber
                };
                lastBtn.Click += PageNumberBtn_Click;
                SpPageNumber.Children.Add(lastBtn);
            }
            else if (currentPageNumber > MaxPageNumber - 1 && totalPageNumber - currentPageNumber > MaxPageNumber - 3)
            {
                var fristBtn = new JmTransparentButton()
                {
                    Content = 1
                };
                fristBtn.Click += PageNumberBtn_Click;
                SpPageNumber.Children.Add(fristBtn);

                SpPageNumber.Children.Add(new TextBlock()
                {
                    Text              = " … ",
                    Foreground        = new SolidColorBrush(Colors.White),
                    VerticalAlignment = VerticalAlignment.Center
                });

                Enumerable.Range(currentPageNumber - 1, MaxPageNumber - 2).ToList()
                .ForEach(i =>
                {
                    var btn = new JmTransparentButton()
                    {
                        Content = i
                    };
                    btn.Click += PageNumberBtn_Click;
                    SpPageNumber.Children.Add(btn);
                });

                SpPageNumber.Children.Add(new TextBlock()
                {
                    Text              = " … ",
                    Foreground        = new SolidColorBrush(Colors.White),
                    VerticalAlignment = VerticalAlignment.Center
                });

                var lastBtn = new JmTransparentButton()
                {
                    Content = totalPageNumber
                };
                lastBtn.Click += PageNumberBtn_Click;
                SpPageNumber.Children.Add(lastBtn);
            }
            else
            {
                var fristBtn = new JmTransparentButton()
                {
                    Content = 1
                };
                fristBtn.Click += PageNumberBtn_Click;
                SpPageNumber.Children.Add(fristBtn);

                SpPageNumber.Children.Add(new TextBlock()
                {
                    Text              = " … ",
                    Foreground        = new SolidColorBrush(Colors.White),
                    VerticalAlignment = VerticalAlignment.Center
                });

                Enumerable.Range(totalPageNumber - MaxPageNumber + 1, MaxPageNumber).ToList()
                .ForEach(i =>
                {
                    var btn = new JmTransparentButton()
                    {
                        Content = i
                    };
                    btn.Click += PageNumberBtn_Click;
                    SpPageNumber.Children.Add(btn);
                });
            }
            #endregion

            if (currentPageNumber != totalPageNumber)
            {
                var nextBtn = new JmTransparentButton()
                {
                    Content = ">"
                };
                nextBtn.Click += NextPageBtn_Click;
                SpPageNumber.Children.Add(nextBtn);
            }

            foreach (var child in SpPageNumber.Children)
            {
                if (child is Button btn && btn.Content.Equals(currentPageNumber))
                {
                    btn.BorderBrush = btn.Foreground = new SolidColorBrush(Colors.SkyBlue);
                    break;
                }
            }
        }