我正在执行文件查询,它返回一个IReadOnlyList。 public IReadOnlyList<StorageFile> FileList; FileList = await queryResult.GetFilesAsync();这工作正常,在其他地方我正在执行foreach循环以将FileList加载到Observable集合中。令我惊讶的是,我应该能够将查询结果直接加载到可观察的集合中,如下所示: public ReadOnlyObservableCollection<StorageFile> FileList; FileList = (ReadOnlyObservableCollection<StorageFile>) await queryResult.GetFilesAsync();代码可以编译,但是会触发一个异常,表明您无法将com对象转换为Observable集合...只是想知道是否有人可以解决此问题?还是我只需要复制对象并使用它?干杯
1 回答
偶然的你
TA贡献1841条经验 获得超3个赞
通过返回的对象(任务返回的)GetFilesAsync()根本就不是一个ReadOnlyObservableCollection<StorageFile>,所以你不能直接投它,你必须复制的元素。
但是,如果使用适当的构造函数重载,则可以使用较短的代码来实现:
var observableCollection = new ObservableCollection<StorageFile>((await queryResult.GetFilesAsync()).ToList());
的构造函数ObservableCollection<T>采用List<T>as作为参数并复制元素。
如果您需要a,ReadOnlyObservableCollection那么它的构造器ReadOnlyObservableCollection<T>将使用ObservableCollection<T>as参数,因此会有些混乱,因此您必须执行以下操作:
var rooc = new ReadOnlyObservableCollection<StorageFile>(
new ObservableCollection<StorageFile>(
(await queryResult.GetFilesAsync()).ToList()));
- 1 回答
- 0 关注
- 186 浏览
添加回答
举报
0/150
提交
取消