CSharp - 无法隐式转换类型'System.Collections.Generic.List to'System.Collections.ObjectModel.ObservableCollection

  显示原文与译文双语对照的内容
0 0

我正在尝试返回集合并将它分配给一个列表框,但我得到了以下错误

"无法隐式转换类型'system 。collections 。generic 。list到'集合。集合。objectmodel"

我是 & 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 0

你的方法说它返回一个 ObservableCollection<Video>,但你返回一个 List<Video> 。 创建一个 ObservableCollection<Video> 并返回它。


return new ObservableCollection<Video>(videoresult);

Multieple DataContexts:

ContextModel


public class ContextModel
{
 public ObservableCollection<Video> Videos { get; set; }
 public object OtherContext { get; set; }
}

主窗口


this.DataContext = new ContextModel()
{
 Videos = Video.LoadVideoInfo(),
 OtherContext = LoadOtherContext()
};

主窗口 Xaml


<ListBox x:Name="VideoList" ItemsSource="{ Binding Videos }"/>
<ListBox x:Name="OtherListBox" ItemsSource="{ Binding OtherContext }"/>

...