Files
WindowsMusicPlayer-TheUntam…/UntamedMusicPlayer/Views/RootPlayBarView.xaml
2026-03-23 20:33:11 +08:00

616 lines
38 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<UserControl x:Class="UntamedMusicPlayer.Views.RootPlayBarView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:helper="using:UntamedMusicPlayer.Helpers"
xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:model="using:UntamedMusicPlayer.Models"
xmlns:ui="using:CommunityToolkit.WinUI"
mc:Ignorable="d">
<Grid KeyTipPlacementMode="Top">
<Grid.RowDefinitions>
<RowDefinition Height="32"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="0.4*" MinWidth="0"/>
<ColumnDefinition Width="0.6*" MinWidth="130"/>
<ColumnDefinition Width="0.4*" MinWidth="0"/>
<ColumnDefinition Width="2*" MinWidth="80"/>
</Grid.ColumnDefinitions>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="Narrow">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="ShuffleButton.Visibility" Value="Collapsed"/>
<Setter Target="ShuffleMenu.Visibility" Value="Visible"/>
<Setter Target="RepeatButton.Visibility" Value="Collapsed"/>
<Setter Target="RepeatMenu.Visibility" Value="Visible"/>
<Setter Target="SkipBackButton.Visibility" Value="Collapsed"/>
<Setter Target="SkipBackMenu.Visibility" Value="Visible"/>
<Setter Target="SkipForwardButton.Visibility" Value="Collapsed"/>
<Setter Target="SkipForwardMenu.Visibility" Value="Visible"/>
<Setter Target="FullScreenButton.Visibility" Value="Collapsed"/>
<Setter Target="FullScreenMenu.Visibility" Value="Visible"/>
<Setter Target="PlayStackPanel.(Grid.Column)" Value="2"/>
<Setter Target="PlayStackPanel.(Grid.ColumnSpan)" Value="1"/>
<Setter Target="PlayStackPanel.(Canvas.ZIndex)" Value="3"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Normal">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="641"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="ShuffleButton.Visibility" Value="Visible"/>
<Setter Target="ShuffleMenu.Visibility" Value="Collapsed"/>
<Setter Target="RepeatButton.Visibility" Value="Visible"/>
<Setter Target="RepeatMenu.Visibility" Value="Collapsed"/>
<Setter Target="SkipBackButton.Visibility" Value="Collapsed"/>
<Setter Target="SkipBackMenu.Visibility" Value="Visible"/>
<Setter Target="SkipForwardButton.Visibility" Value="Collapsed"/>
<Setter Target="SkipForwardMenu.Visibility" Value="Visible"/>
<Setter Target="FullScreenButton.Visibility" Value="Visible"/>
<Setter Target="FullScreenMenu.Visibility" Value="Collapsed"/>
<Setter Target="PlayStackPanel.(Grid.Column)" Value="1"/>
<Setter Target="PlayStackPanel.(Grid.ColumnSpan)" Value="3"/>
<Setter Target="PlayStackPanel.HorizontalAlignment" Value="Center"/>
<Setter Target="PlayStackPanel.(Canvas.ZIndex)" Value="3"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Wide">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="861"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="ShuffleButton.Visibility" Value="Visible"/>
<Setter Target="ShuffleMenu.Visibility" Value="Collapsed"/>
<Setter Target="RepeatButton.Visibility" Value="Visible"/>
<Setter Target="RepeatMenu.Visibility" Value="Collapsed"/>
<Setter Target="FullScreenButton.Visibility" Value="Visible"/>
<Setter Target="FullScreenMenu.Visibility" Value="Collapsed"/>
<Setter Target="PlayStackPanel.(Grid.Column)" Value="1"/>
<Setter Target="PlayStackPanel.(Grid.ColumnSpan)" Value="3"/>
<Setter Target="PlayStackPanel.HorizontalAlignment" Value="Center"/>
<Setter Target="PlayStackPanel.(Canvas.ZIndex)" Value="3"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<!-- 进度条 -->
<Grid Grid.Row="0" Grid.ColumnSpan="5">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0"
Margin="16,0,0,0" HorizontalAlignment="Left"
VerticalAlignment="Center"
FontSize="12"
Text="{x:Bind GetCurrent(model:Data.PlayState.CurrentPlayingTime), Mode=OneWay}"/>
<Slider x:Name="ProgressSlider" x:Uid="PlayBar_Seek"
Grid.Row="0" Grid.Column="1"
Margin="27,0,27,0" Padding="-4"
VerticalAlignment="Center"
AccessKey="S"
IsEnabled="{x:Bind ViewModel.Availability, Mode=OneWay}"
IsThumbToolTipEnabled="False"
Loaded="ProgressSlider_Loaded" Maximum="100"
Minimum="0" Orientation="Horizontal"
Visibility="{x:Bind GetSliderVisibility(model:Data.PlayState.PlayState), Mode=OneWay}"
Value="{x:Bind GetPositionPercentage(model:Data.PlayState.CurrentPlayingTime, model:Data.PlayState.TotalPlayingTime), Mode=OneWay}"/>
<ProgressBar Grid.Row="0" Grid.Column="1"
Margin="23,0,23,0"
IsIndeterminate="True" ShowError="False"
ShowPaused="False"
Visibility="{x:Bind GetProgressVisibility(model:Data.PlayState.PlayState), Mode=OneWay}"/>
<TextBlock Grid.Row="0" Grid.Column="2"
Margin="0,0,16,0" HorizontalAlignment="Right"
VerticalAlignment="Center"
FontSize="12"
Text="{x:Bind GetRemaining(model:Data.PlayState.CurrentPlayingTime, model:Data.PlayState.TotalPlayingTime), Mode=OneWay}"/>
</Grid>
<!-- 歌曲信息 -->
<Button x:Uid="PlayBar_NowPlaying"
Grid.Row="1" Grid.Column="0"
Height="80" MinWidth="162"
Margin="4,0,0,4" HorizontalAlignment="Left"
AccessKey="Z"
AutomationProperties.HelpText="{x:Bind model:Data.PlayState.CurrentSong.ArtistAndAlbumStr, Mode=OneWay}"
AutomationProperties.Name="{x:Bind model:Data.PlayState.CurrentSong.Title, Mode=OneWay}"
Click="CoverBtnClickToDetail"
IsEnabled="{x:Bind ViewModel.Availability, Mode=OneWay}"
Style="{StaticResource CoverButtonStyle}">
<Button.KeyboardAccelerators>
<KeyboardAccelerator Key="N" Modifiers="Control"/>
</Button.KeyboardAccelerators>
<Button.ContextFlyout>
<MenuFlyout>
<MenuFlyoutItem x:Uid="Songs_Play"
Width="216"
Click="{x:Bind ViewModel.PlayButton_Click}"
Icon="{ui:FontIcon FontFamily={StaticResource UntamedFontFamily},
Glyph=&#xE768;}"/>
<MenuFlyoutItem x:Uid="Songs_PlayNext"
Click="{x:Bind ViewModel.PlayNextButton_Click}"
Icon="{ui:FontIcon FontFamily={StaticResource UntamedFontFamily},
Glyph=&#xF5EB;}"/>
<MenuFlyoutSeparator/>
<MenuFlyoutSubItem x:Uid="Songs_AddTo"
Icon="{ui:FontIcon FontFamily={StaticResource UntamedFontFamily},
Glyph=&#xE710;}"
Loaded="AddToSubItem_Loaded">
<MenuFlyoutItem x:Uid="Songs_AddTo_PlayQueue"
Width="216"
Click="{x:Bind ViewModel.AddToPlayQueueButton_Click}"
Icon="{ui:FontIcon FontFamily={StaticResource UntamedFontFamily},
Glyph=&#xE93F;}"/>
<MenuFlyoutSeparator/>
<MenuFlyoutItem x:Uid="Songs_AddTo_NewPlaylist"
Click="AddToNewPlaylistButton_Click"
Icon="{ui:FontIcon FontFamily={StaticResource UntamedFontFamily},
Glyph=&#xE710;}"/>
</MenuFlyoutSubItem>
<MenuFlyoutItem x:Uid="Songs_ShowAlbum"
Click="{x:Bind ViewModel.ShowAlbumButton_Click}"
Icon="{ui:FontIcon FontFamily={StaticResource UntamedFontFamily},
Glyph=&#xE93C;}"/>
<MenuFlyoutItem x:Uid="Songs_ShowArtist"
Click="{x:Bind ViewModel.ShowArtistButton_Click}"
Icon="{ui:FontIcon FontFamily={StaticResource UntamedFontFamily},
Glyph=&#xE77B;}"/>
<MenuFlyoutItem x:Uid="Songs_Properties"
Click="PropertiesButton_Click"
Icon="{ui:FontIcon FontFamily={StaticResource UntamedFontFamily},
Glyph=&#xE946;}"/>
</MenuFlyout>
</Button.ContextFlyout>
<StackPanel HorizontalAlignment="Left"
Orientation="Horizontal"
Visibility="{x:Bind ViewModel.ButtonVisibility, Mode=OneWay}">
<StackPanel.ChildrenTransitions>
<EntranceThemeTransition FromHorizontalOffset="50" IsStaggeringEnabled="True"/>
<RepositionThemeTransition IsStaggeringEnabled="False"/>
</StackPanel.ChildrenTransitions>
<Border x:Name="CoverBorder"
Width="70" Height="70"
Margin="4,0,0,0" Padding="0"
HorizontalAlignment="Left"
CornerRadius="3"
Visibility="{x:Bind GetNotDetailedVisibility(ViewModel.IsDetail), Mode=OneWay}">
<Canvas>
<Image x:Name="ControllerCover"
Width="70" Height="70"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Canvas.ZIndex="1" Stretch="UniformToFill">
<interactivity:Interaction.Behaviors>
<helper:FadeImageBehavior Source="{x:Bind model:Data.PlayState.CurrentSong.Cover, Mode=OneWay}" Duration="0:0:0.45"/>
</interactivity:Interaction.Behaviors>
</Image>
<Grid Width="70" Height="70"
Background="{ThemeResource SolidBackgroundFillColorSecondaryBrush}"
Canvas.ZIndex="0">
<FontIcon Canvas.ZIndex="0"
FontFamily="{StaticResource UntamedFontFamily}"
FontSize="25"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Glyph="&#xE940;"/>
</Grid>
</Canvas>
</Border>
<StackPanel Orientation="Horizontal">
<TextBlock Width="6" Visibility="{x:Bind GetNotDetailedVisibility(ViewModel.IsDetail), Mode=OneWay}"/>
<StackPanel Margin="0,0,4,0" HorizontalAlignment="Left"
VerticalAlignment="Center">
<TextBlock x:Name="SongTitleTextBlock"
Margin="10,0,0,4"
FontSize="20" FontWeight="Medium"
Text="{x:Bind model:Data.PlayState.CurrentSong.Title, Mode=OneWay}"
TextTrimming="CharacterEllipsis"
TextWrapping="NoWrap"/>
<TextBlock x:Name="ArtistAndAlbumTextBlock"
Margin="10,0,0,0"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Text="{x:Bind model:Data.PlayState.CurrentSong.ArtistAndAlbumStr, Mode=OneWay}"
TextTrimming="CharacterEllipsis"
TextWrapping="NoWrap"
Visibility="{x:Bind GetArtistAndAlbumStrVisibility(model:Data.PlayState.CurrentSong), Mode=OneWay}"/>
</StackPanel>
<TextBlock Width="8" Visibility="{x:Bind ViewModel.IsDetail, Mode=OneWay}"/>
</StackPanel>
</StackPanel>
</Button>
<!-- 播放控制 -->
<StackPanel x:Name="PlayStackPanel"
Grid.Row="1"
HorizontalAlignment="Center"
Orientation="Horizontal" Spacing="7">
<StackPanel.ChildrenTransitions>
<RepositionThemeTransition IsStaggeringEnabled="False"/>
</StackPanel.ChildrenTransitions>
<!-- 随机播放 -->
<Button x:Name="ShuffleButton"
AccessKey="H"
Click="{x:Bind model:Data.PlayQueueManager.ShuffleModeUpdate}"
IsEnabled="{x:Bind ViewModel.Availability, Mode=OneWay}"
Style="{StaticResource MenuButtonStyle}"
ToolTipService.ToolTip="{x:Bind GetShuffleModeToolTip(model:Data.PlayState.ShuffleMode), Mode=OneWay}">
<Button.KeyboardAccelerators>
<KeyboardAccelerator Key="H" Modifiers="Control"/>
</Button.KeyboardAccelerators>
<FontIcon FontFamily="{StaticResource UntamedFontFamily}"
FontSize="16"
Glyph="{x:Bind GetShuffleModeIcon(model:Data.PlayState.ShuffleMode), Mode=OneWay}"/>
</Button>
<!-- 上一曲 -->
<Button x:Uid="PlayBar_Prev"
AccessKey="B"
Click="{x:Bind model:Data.MusicPlayer.PlayPreviousSong}"
IsEnabled="{x:Bind ViewModel.Availability, Mode=OneWay}"
Style="{StaticResource MenuButtonStyle}">
<Button.KeyboardAccelerators>
<KeyboardAccelerator Key="B" Modifiers="Control"/>
</Button.KeyboardAccelerators>
<FontIcon FontFamily="{StaticResource UntamedFontFamily}"
FontSize="16" Glyph="&#xE622;"/>
</Button>
<!-- 快退10s -->
<Button x:Name="SkipBackButton" x:Uid="PlayBar_SkipBack10s"
AccessKey="I"
Click="{x:Bind model:Data.MusicPlayer.SkipBack10s}"
IsEnabled="{x:Bind ViewModel.Availability, Mode=OneWay}"
Style="{StaticResource MenuButtonStyle}"
Visibility="{x:Bind ViewModel.IsDetail, Mode=OneWay}">
<Button.KeyboardAccelerators>
<KeyboardAccelerator Key="Left" Modifiers="Control"/>
</Button.KeyboardAccelerators>
<FontIcon FontFamily="{StaticResource UntamedFontFamily}"
FontSize="16" Glyph="&#xED3C;"/>
</Button>
<!-- 播放/暂停 -->
<Button x:Name="PlayButton"
Width="50" Height="50"
AccessKey="P"
Click="{x:Bind model:Data.MusicPlayer.PlayPauseUpdate}"
IsEnabled="{x:Bind ViewModel.Availability, Mode=OneWay}"
Style="{StaticResource PlayButtonStyle}"
ToolTipService.ToolTip="{x:Bind GetPlayPauseTooltip(model:Data.PlayState.PlayState), Mode=OneWay}">
<Button.KeyboardAccelerators>
<KeyboardAccelerator Key="Space"/>
<KeyboardAccelerator Key="P" Modifiers="Control"/>
</Button.KeyboardAccelerators>
<FontIcon FontFamily="{StaticResource UntamedFontFamily}"
FontSize="23"
Glyph="{x:Bind GetPlayPauseIcon(model:Data.PlayState.PlayState), Mode=OneWay}"/>
</Button>
<!-- 快进30s -->
<Button x:Name="SkipForwardButton" x:Uid="PlayBar_SkipForw30s"
AccessKey="O"
Click="{x:Bind model:Data.MusicPlayer.SkipForward30s}"
IsEnabled="{x:Bind ViewModel.Availability, Mode=OneWay}"
Style="{StaticResource MenuButtonStyle}"
Visibility="{x:Bind ViewModel.IsDetail, Mode=OneWay}">
<Button.KeyboardAccelerators>
<KeyboardAccelerator Key="Right" Modifiers="Control"/>
</Button.KeyboardAccelerators>
<FontIcon FontFamily="{StaticResource UntamedFontFamily}"
FontSize="16" Glyph="&#xED3D;"/>
</Button>
<!-- 下一曲 -->
<Button x:Uid="PlayBar_Next"
AccessKey="F"
Click="{x:Bind model:Data.MusicPlayer.PlayNextSong}"
IsEnabled="{x:Bind ViewModel.Availability, Mode=OneWay}"
Style="{StaticResource MenuButtonStyle}">
<Button.KeyboardAccelerators>
<KeyboardAccelerator Key="F" Modifiers="Control"/>
</Button.KeyboardAccelerators>
<FontIcon FontFamily="{StaticResource UntamedFontFamily}"
FontSize="16" Glyph="&#xE623;"/>
</Button>
<!-- 循环播放 -->
<Button x:Name="RepeatButton"
AccessKey="T"
Click="{x:Bind model:Data.PlayQueueManager.RepeatModeUpdate}"
Style="{StaticResource MenuButtonStyle}"
ToolTipService.ToolTip="{x:Bind GetRepeatModeToolTip(model:Data.PlayState.RepeatMode), Mode=OneWay}">
<Button.KeyboardAccelerators>
<KeyboardAccelerator Key="T" Modifiers="Control"/>
</Button.KeyboardAccelerators>
<FontIcon FontFamily="{StaticResource UntamedFontFamily}"
FontSize="16"
Glyph="{x:Bind GetRepeatModeIcon(model:Data.PlayState.RepeatMode), Mode=OneWay}"/>
</Button>
</StackPanel>
<!-- 其他控制 -->
<StackPanel Grid.Row="1" Grid.Column="4"
Margin="0,0,4,0" HorizontalAlignment="Right"
Orientation="Horizontal" Spacing="7">
<!-- 音量 -->
<Button x:Uid="PlayBar_Volume"
AccessKey="V"
Style="{StaticResource MenuButtonStyle}">
<FontIcon FontFamily="{StaticResource UntamedFontFamily}"
FontSize="16"
Glyph="{x:Bind GetVolumeIcon(model:Data.PlayState.Volume, model:Data.PlayState.IsMute), Mode=OneWay}"/>
<Button.Flyout>
<Flyout>
<StackPanel Margin="-5,-4,-3,-5"
KeyTipPlacementMode="Top" Orientation="Horizontal"
Spacing="12">
<Button AccessKey="M"
Click="{x:Bind model:Data.MusicPlayer.MuteUnmuteUpdate}"
Style="{StaticResource MenuButtonStyle}">
<FontIcon FontFamily="{StaticResource UntamedFontFamily}"
FontSize="16"
Glyph="{x:Bind GetVolumeIcon(model:Data.PlayState.Volume, model:Data.PlayState.IsMute), Mode=OneWay}"/>
</Button>
<Slider x:Name="VolumeSlider" x:Uid="PlayBar_Volume"
Width="180"
Margin="0,3,0,0"
AccessKey="V" IsThumbToolTipEnabled="False"
Maximum="100" Minimum="0"
Value="{x:Bind model:Data.PlayState.Volume, Mode=TwoWay}"/>
<TextBlock Width="20"
Margin="-1,0,0,0" VerticalAlignment="Center"
Canvas.ZIndex="1" FontSize="12"
Text="{x:Bind model:Data.PlayState.Volume, Mode=OneWay}"
TextAlignment="Center"/>
</StackPanel>
</Flyout>
</Button.Flyout>
</Button>
<!-- 全屏 -->
<Button x:Name="FullScreenButton" x:Uid="PlayBar_FullScreen"
AccessKey="U"
Click="{x:Bind ViewModel.FullScreenButton_Click}"
Style="{StaticResource MenuButtonStyle}">
<Button.KeyboardAccelerators>
<KeyboardAccelerator Key="F11"/>
</Button.KeyboardAccelerators>
<FontIcon FontFamily="{StaticResource UntamedFontFamily}"
FontSize="16"
Glyph="{x:Bind GetFullScreenIcon(ViewModel.IsFullScreen), Mode=OneWay}"/>
</Button>
<!-- 桌面歌词 -->
<Button x:Uid="PlayBar_DesktopLyric"
AccessKey="M"
Click="{x:Bind ViewModel.DesktopLyricButton_Click}"
Style="{StaticResource MenuButtonStyle}">
<Button.KeyboardAccelerators>
<KeyboardAccelerator Key="M" Modifiers="Control"/>
</Button.KeyboardAccelerators>
<FontIcon FontFamily="{StaticResource UntamedFontFamily}"
FontSize="16" Glyph="&#xE70A;"/>
</Button>
<!-- 更多菜单 -->
<Button x:Uid="PlayBar_More"
AccessKey="R"
Style="{StaticResource MenuButtonStyle}">
<FontIcon FontFamily="{StaticResource UntamedFontFamily}"
FontSize="16" Glyph="&#xE712;"/>
<Button.Flyout>
<MenuFlyout>
<!-- 歌曲属性 -->
<MenuFlyoutItem x:Uid="PlayBar_Property"
AccessKey="P" Click="PlayBarProperty_Click"
Icon="{ui:FontIcon FontFamily={StaticResource UntamedFontFamily},
Glyph=&#xE946;}"
IsEnabled="{x:Bind ViewModel.Availability, Mode=OneWay}"
KeyTipPlacementMode="Left">
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Key="I" Modifiers="Control"/>
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
<MenuFlyoutSeparator/>
<!-- 均衡器 -->
<MenuFlyoutItem x:Uid="PlayBar_Equalizer"
AccessKey="E" Click="EqualizerButton_Click"
Icon="{ui:FontIcon FontFamily={StaticResource UntamedFontFamily},
Glyph=&#xE9E9;}"
IsEnabled="{x:Bind ViewModel.Availability, Mode=OneWay}"
KeyTipPlacementMode="Left">
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Key="E" Modifiers="Control, Shift"/>
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
<!-- 播放速度 -->
<MenuFlyoutSubItem x:Uid="PlayBar_Speed"
AccessKey="S"
Icon="{ui:FontIcon FontFamily={StaticResource UntamedFontFamily},
Glyph=&#xEC4A;}"
IsEnabled="{x:Bind ViewModel.Availability, Mode=OneWay}"
KeyTipPlacementMode="Left">
<MenuFlyoutItem Margin="3,0,3,1">
<MenuFlyoutItem.Template>
<ControlTemplate>
<ListView x:Name="SpeedListView"
KeyTipPlacementMode="Left"
Loaded="SpeedListView_Loaded"
SelectionChanged="SpeedListView_SelectionChanged">
<ListViewItem Margin="0,2,0,1" AccessKey="G">
<ListViewItem.KeyboardAccelerators>
<KeyboardAccelerator Key="G" Modifiers="Control,Shift"/>
</ListViewItem.KeyboardAccelerators>
<Grid Width="125">
<TextBlock HorizontalAlignment="Left" Text="0.25 ×"/>
<TextBlock HorizontalAlignment="Right"
VerticalAlignment="Center"
FontSize="12"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Text="Ctrl+Shift+G"/>
</Grid>
</ListViewItem>
<ListViewItem Margin="0,1,0,1" AccessKey="H">
<ListViewItem.KeyboardAccelerators>
<KeyboardAccelerator Key="H" Modifiers="Control,Shift"/>
</ListViewItem.KeyboardAccelerators>
<Grid Width="125">
<TextBlock HorizontalAlignment="Left" Text="0.5 ×"/>
<TextBlock HorizontalAlignment="Right"
VerticalAlignment="Center"
FontSize="12"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Text="Ctrl+Shift+H"/>
</Grid>
</ListViewItem>
<ListViewItem Margin="0,1,0,1" AccessKey="J">
<ListViewItem.KeyboardAccelerators>
<KeyboardAccelerator Key="J" Modifiers="Control,Shift"/>
</ListViewItem.KeyboardAccelerators>
<Grid Width="125">
<TextBlock HorizontalAlignment="Left" Text="1 ×"/>
<TextBlock HorizontalAlignment="Right"
VerticalAlignment="Center"
FontSize="12"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Text="Ctrl+Shift+J"/>
</Grid>
</ListViewItem>
<ListViewItem Margin="0,1,0,1" AccessKey="K">
<ListViewItem.KeyboardAccelerators>
<KeyboardAccelerator Key="K" Modifiers="Control,Shift"/>
</ListViewItem.KeyboardAccelerators>
<Grid Width="125">
<TextBlock HorizontalAlignment="Left" Text="1.5 ×"/>
<TextBlock HorizontalAlignment="Right"
VerticalAlignment="Center"
FontSize="12"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Text="Ctrl+Shift+K"/>
</Grid>
</ListViewItem>
<ListViewItem Margin="0,1,0,2" AccessKey="L">
<ListViewItem.KeyboardAccelerators>
<KeyboardAccelerator Key="L" Modifiers="Control,Shift"/>
</ListViewItem.KeyboardAccelerators>
<Grid Width="125">
<TextBlock HorizontalAlignment="Left" Text="2 ×"/>
<TextBlock HorizontalAlignment="Right"
VerticalAlignment="Center"
FontSize="12"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
Text="Ctrl+Shift+L"/>
</Grid>
</ListViewItem>
</ListView>
</ControlTemplate>
</MenuFlyoutItem.Template>
</MenuFlyoutItem>
</MenuFlyoutSubItem>
<!-- 投屏 -->
<MenuFlyoutItem x:Uid="PlayBar_CastDevice"
AccessKey="C"
Icon="{ui:FontIcon FontFamily={StaticResource UntamedFontFamily},
Glyph=&#xEC15;}"
IsEnabled="{x:Bind ViewModel.Availability, Mode=OneWay}"
KeyTipPlacementMode="Left">
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Key="K" Modifiers="Control"/>
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
<!-- 快退10s -->
<MenuFlyoutItem x:Name="SkipBackMenu" x:Uid="PlayBar_More_SkipBack10s"
AccessKey="I"
Click="{x:Bind model:Data.MusicPlayer.SkipBack10s}"
Icon="{ui:FontIcon FontFamily={StaticResource UntamedFontFamily},
Glyph=&#xED3C;}"
IsEnabled="{x:Bind ViewModel.Availability, Mode=OneWay}"
KeyTipPlacementMode="Left"
Visibility="{x:Bind GetNotDetailedVisibility(ViewModel.IsDetail), Mode=OneWay}">
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Key="Left" Modifiers="Control"/>
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
<!-- 快进30s -->
<MenuFlyoutItem x:Name="SkipForwardMenu" x:Uid="PlayBar_More_SkipForw30s"
AccessKey="O"
Click="{x:Bind model:Data.MusicPlayer.SkipForward30s}"
Icon="{ui:FontIcon FontFamily={StaticResource UntamedFontFamily},
Glyph=&#xED3D;}"
IsEnabled="{x:Bind ViewModel.Availability, Mode=OneWay}"
KeyTipPlacementMode="Left"
Visibility="{x:Bind GetNotDetailedVisibility(ViewModel.IsDetail), Mode=OneWay}">
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Key="Right" Modifiers="Control"/>
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
<!-- 随机播放 -->
<MenuFlyoutItem x:Name="ShuffleMenu"
AccessKey="H"
Click="{x:Bind model:Data.PlayQueueManager.ShuffleModeUpdate}"
IsEnabled="{x:Bind ViewModel.Availability, Mode=OneWay}"
KeyTipPlacementMode="Left"
Text="{x:Bind GetMoreShuffleModeText(model:Data.PlayState.ShuffleMode), Mode=OneWay}">
<MenuFlyoutItem.Icon>
<FontIcon FontFamily="{StaticResource UntamedFontFamily}" Glyph="{x:Bind GetShuffleModeIcon(model:Data.PlayState.ShuffleMode), Mode=OneWay}"/>
</MenuFlyoutItem.Icon>
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Key="H" Modifiers="Control"/>
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
<!-- 循环播放 -->
<MenuFlyoutItem x:Name="RepeatMenu"
AccessKey="T"
Click="{x:Bind model:Data.PlayQueueManager.RepeatModeUpdate}"
KeyTipPlacementMode="Left"
Text="{x:Bind GetMoreRepeatModeText(model:Data.PlayState.RepeatMode), Mode=OneWay}">
<MenuFlyoutItem.Icon>
<FontIcon FontFamily="{StaticResource UntamedFontFamily}" Glyph="{x:Bind GetRepeatModeIcon(model:Data.PlayState.RepeatMode), Mode=OneWay}"/>
</MenuFlyoutItem.Icon>
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Key="T" Modifiers="Control"/>
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
<!-- 全屏 -->
<MenuFlyoutItem x:Name="FullScreenMenu" x:Uid="PlayBar_Menu_FullScreeen"
AccessKey="U"
Icon="{ui:FontIcon FontFamily={StaticResource UntamedFontFamily},
Glyph=&#xE740;}"
KeyTipPlacementMode="Left">
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Key="F11"/>
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
</MenuFlyout>
</Button.Flyout>
</Button>
</StackPanel>
</Grid>
</UserControl>