2016-05-24 8 views
0

私はUWPのためにC#でアプリケーションを開発していると私はコメントしています。これは初めてのことであり、彼のアルバムとアーティストの曲のリストを表示しようと思いますListViewで(ListView.items.add)それらのプロパティを一緒に使用しますが、これはまったく美的ではありません。 ?私たちを手伝ってくれますか?音楽ライブラリリストApp - UWP/C#

protected async override void OnNavigatedTo(NavigationEventArgs e) 
    { 
     base.OnNavigatedTo(e); 

     this.DataContext = this; 


     StorageFolder storageFolder = KnownFolders.MusicLibrary; 

     var files = await storageFolder.GetFilesAsync(); 


     foreach (var file in files) 
     { 
      var musicProperties = await file.Properties.GetMusicPropertiesAsync(); 

      var Artista = musicProperties.Artist; 
      if (Artista == "") 
      { 
       Artista = "Artista desconocido"; 
      } 
      string fileName = file.DisplayName; 

      listView.Items.Add(file.DisplayName + "-" + Artista ); 

     } 


    } 
+0

申し訳ありませんが、質問には別の翻訳者を試してみることをお勧めします。 –

+0

私がやりたかったのはListView内のテキストブロックに変数 "filename"を表示することです –

+0

あなたは代わりに何を得ていますか? –

答えて

1

結合がで可能ですか?

はい、結合が可能であると私はバインディングが、あなたは、各項目の構造を構築するためにDataTemplateを使用して通知する場合を提供するために、ObservableCollection Classを使用することができるはずの背後にあるコードでListViewに項目を追加するよりも良い方法だと思いますアイテムが追加、削除、またはリフレッシュされます。

ここで例えば

<ListView ItemsSource="{x:Bind MusicList}"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <StackPanel Orientation="Horizontal"> 
        <TextBlock Text="File Name: " /> 
        <TextBlock Text="{Binding FileName}" /> 
       </StackPanel> 
       <StackPanel Orientation="Horizontal"> 
        <TextBlock Text="Artist: " /> 
        <TextBlock Text="{Binding Artist}" /> 
       </StackPanel> 
       <StackPanel Orientation="Horizontal"> 
        <TextBlock Text="Album: " /> 
        <TextBlock Text="{Binding Album}" /> 
       </StackPanel> 
      </StackPanel> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

そして、あなたはこれらの "ファイル名"、 "アーティスト" のためのデータモデルクラスを作成する必要があり、かつ "アルバム" のプロパティ:背後

public class MusicLib 
{ 
    public string FileName { get; set; } 
    public string Artist { get; set; } 
    public string Album { get; set; } 
} 

コード:

private ObservableCollection<MusicLib> MusicList = new ObservableCollection<MusicLib>(); 

public MainPage() 
{ 
    this.InitializeComponent(); 
} 

protected override async void OnNavigatedTo(NavigationEventArgs e) 
{ 
    StorageFolder musicLib = KnownFolders.MusicLibrary; 
    var files = await musicLib.GetFilesAsync(); 
    foreach (var file in files) 
    { 
     var musicProperties = await file.Properties.GetMusicPropertiesAsync(); 
     var artist = musicProperties.Artist; 
     if (artist == "") 
      artist = "Artista desconocido"; 
     var album = musicProperties.Album; 
     if (album == "") 
      album = "Unkown"; 
     MusicList.Add(new MusicLib { FileName = file.DisplayName, Artist = artist, Album = album }); 
    } 
} 

空の「Artist」と「Album」のプロパティをここで特定の値に設定する方法を使用しましたが、 Converterを使用してConverterを使用する方法の詳細についてはIValueConverter interfaceを参照してください。この文書にはサンプルがあります。

ちなみに、アプリでミュージックライブラリにアクセスするには、「Package.appxmanifest」ファイルの「ミュージックライブラリ」機能を有効にする必要があります。