为Windows Phone 8开发媒体播放器

时间:2014-03-29 12:20:47

标签: c# xaml windows-phone-8 mediaelement

我将为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);
  }
}

接下来我需要设计播放列表,我可以在列表歌曲列表中显示所有歌曲。 我不知道如何设计播放列表功能。

例如。制作一个可以显示播放列表中所有名称的框,以及如何按顺序显示歌曲名称。

2 个答案:

答案 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;