我正在尝试返回集合并将其分配给列表框但我收到了以下错误
“无法将类型'System.Collections.Generic.List隐式转换为 “System.Collections.ObjectModel.ObservableCollection“
我是WPF&的新手C#我不知道如何处理这个问题。
我想要做的就是将“我的视频”文件夹中的所有视频加载到包含媒体元素控件的列表框中。
返回的正确方法是什么?
代码:
public class Video
{
public Uri SourceUri { get; set; }
public static ObservableCollection<Video> LoadVideoInfo()
{
List<Video> videoresult = new List<Video>();
foreach (string filename in
System.IO.Directory.GetFiles(
Environment.GetFolderPath(
Environment.SpecialFolder.MyVideos)))
videoresult.Add(new Video { SourceUri = new UriBuilder(filename).Uri });
return videoresult;
}
}
XAML:
<ListBox x:Name="VideoList" ItemsSource="{Binding }" Width="auto" Height=" auto" Margin="5,0,5,2" Grid.ColumnSpan="2" >
<ListBox.ItemTemplate>
<DataTemplate>
<MediaElement Source="{Binding SourceUri}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
答案 0 :(得分:2)
您的方法说它返回ObservableCollection<Video>
,但您返回List<Video>
。
创建一个ObservableCollection<Video>
并将其返回。
return new ObservableCollection<Video>(videoresult);
public class ContextModel
{
public ObservableCollection<Video> Videos { get; set; }
public object OtherContext { get; set; }
}
this.DataContext = new ContextModel()
{
Videos = Video.LoadVideoInfo(),
OtherContext = LoadOtherContext()
};
<ListBox x:Name="VideoList" ItemsSource="{ Binding Videos }" />
<ListBox x:Name="OtherListBox" ItemsSource="{ Binding OtherContext }" />
答案 1 :(得分:0)
在return语句中,使用以下代码。
return (new ObservableCollection(videoresult));
答案 2 :(得分:0)
你应该改变返回类型,返回类型应该是ObservableCollection而不是List。
答案 3 :(得分:0)
试试这个
ObservableCollection<Video> videoresult = new ObservableCollection<Video>();