結合がで可能ですか?
はい、結合が可能であると私はバインディングが、あなたは、各項目の構造を構築するために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」ファイルの「ミュージックライブラリ」機能を有効にする必要があります。
申し訳ありませんが、質問には別の翻訳者を試してみることをお勧めします。 –
私がやりたかったのはListView内のテキストブロックに変数 "filename"を表示することです –
あなたは代わりに何を得ていますか? –