私の問題を最も簡単な方法で説明します。私はリストビューとグリッドビューの両方とバインディングを長い間扱ってきましたが、今は説明のつかない問題を抱えているので、本当に助けが必要です.
以下は私のリストビューのxamlコードです。
<ListView Name="OtherVideosList" ItemsSource="{x:Bind VideoFiles}" SelectionChanged="OtherVideosList_SelectionChanged">
<ListView.ItemTemplate>
<DataTemplate x:DataType="data:VideoFile">
<StackPanel Orientation="Horizontal">
<Image Source="{x:Bind Thumbnail}"/>
<StackPanel>
<TextBlock Text="{x:Bind FileName}"/>
<TextBlock Text="{x:Bind Duration}"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
以下のObservableCollectionにバインドしてい ますが、そのデータ型クラスです。
public class VideoFile
{
public string FileName { get; set; }
public string Duration { get; set; }
public StorageFile File { get; set; }
public BitmapImage Thumbnail { get; set; }
}
このクラスを使用してアイテムソースを作成しています
public ObservableCollection<VideoFile> VideoFiles { get; set; }
ボタンを使用して複数のファイルを開き、アイテム ソースに配置して、後でメディア要素で再生します。以下は、イベント ハンドラーのコードです。
private async void OpenClick(object sender, RoutedEventArgs e)
{
try
{
var p = new FileOpenPicker();
foreach (var item in videoTypes)
{
p.FileTypeFilter.Add(item);
}
//Curentplayingfiles is IReadOnlyList<StorageFiles>
CurrentlyPlayingFiles = await p.PickMultipleFilesAsync();
if (CurrentlyPlayingFiles.Count != 0)
{
if (CurrentlyPlayingFiles.Count == 1)
{ //this if block works absolutely fine
CurrentlyPlayingFile = CurrentlyPlayingFiles[0];
var s = await CurrentlyPlayingFile.OpenReadAsync();
ME.SetSource(s, CurrentlyPlayingFile.ContentType);
}
else
{
VideoFiles = new ObservableCollection<VideoFile>();
foreach (var file in CurrentlyPlayingFiles)
{
//Thumbnail and GetDuration are my own static methods to get thumbnail
//and duration property of the file respectively
VideoFiles.Add(new VideoFile { Thumbnail = await Thumbnail(file), Duration = await GetDuration(file), File = file, FileName = file.DisplayName });
}
//exception occurs on this very line below, because here OtherVideosList has zero items.
OtherVideosList.SelectedIndex = 0;
}
}
}
catch (Exception s){ var dr = s.Message; }
}
あなたへのコメントで重要なポイントについて言及しました。 どんな助けでも大歓迎です、どうもありがとう..