我将为Windows Phone 8设计一个媒体播放器。 我读到了使用MediaLibrary(用于使用内置播放器)和MediaElement(用于设计自定义播放器)。
我使用MediaSource使用以下语句获取手机存储上的所有文件。
MediaSource media_local = MediaSource.GetAvailableMediaSources().First((source => source.MediaSourceType == MediaSourceType.LocalDevice));
using (MediaLibrary mediaLibrary = new MediaLibrary(media_local))
{
SongCollection Songs = mediaLibrary.Songs;
MediaPlayer.Play(mediaLibrary.Songs);
List<Song> songslist = Songs.ToList();
foreach (var item in songslist)
{
System.Diagnostics.Debug.WriteLine(item.Name);
}
}
接下来我需要设计播放列表,我可以在列表歌曲列表中显示所有歌曲。 我不知道如何设计播放列表功能。
例如。制作一个可以显示播放列表中所有名称的框,以及如何按顺序显示歌曲名称。
答案 0 :(得分:2)
您可以使用列表框...
这是原始的xaml declration
<ListBox x:Name="listBoxSong" FontSize="26">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" Width="150"/>
<TextBlock Text="{Binding TrackNumber}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
现在只需将代码绑定到此列表框即可。
像这样:
listBoxSong.ItemSource = songslist;
这将生成列表类型的结构,并在很大程度上提供自定义。
答案 1 :(得分:0)
试试这个。
的Xaml
<phone:LongListSelector Name="llsPlaylist"
LayoutMode="List"
SelectionChanged="SelectSong_SelectionChanged">
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid Width="40"
Height="40"
Margin="0 5 5 0"
VerticalAlignment="Top"
HorizontalAlignment="Right">
<Ellipse Stroke="White"
StrokeThickness="2" />
<Image Source="/Assets/Icons/play.png"
Height="30"
Width="30"
Margin="3 0 0 0"
VerticalAlignment="Center"
HorizontalAlignment="Center" />
</Grid>
<StackPanel Grid.Column="1"
Margin="20 0 20 0">
<TextBlock Foreground="White"
FontSize="24"
TextWrapping="NoWrap"
Text="{Binding Name}" />
<TextBlock Foreground="Gray"
FontSize="18"
TextWrapping="NoWrap"
Text="{Binding Artist}" />
</StackPanel>
<TextBlock FontSize="16"
Foreground="White"
Grid.Column="2"
HorizontalAlignment="Right"
Padding="0 12 0 0"
TextWrapping="NoWrap"
Text="{Binding Duration}">
</TextBlock>
</Grid>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>
CS
llsPlaylist.ItemSource=songslist;