下面是使用地铁API和数据绑定(使用MVVM)来填充在下拉列表中的文件夹列表中选择一个样本实现。
视图模型的构造函数使用SetFolders方法(私人异步),它调用的方法awaitable fileService.GetFoldersAsync()来获取文件夹列表。 文件夹列表中,然后被分配到所谓的“FoldersList”的属性。 XAML使用这个属性来使用数据绑定一个下拉列表。
我不知道是否有更好的方法来设置FoldersList属性,而不必设置如下它在构造函数中。 我宁愿叫GetFilesAsync方法,当实际数据绑定(未在类初始化)时设置FilesList属性值。 由于性能不支持异步/等待修饰符(据我所知)我竭力实现一个妥善的解决办法。 任何想法不胜感激。
代码如下。
视图模型
public class FileViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private readonly IFileService fileService;
public FileDataViewModel(IFileService fileService)
{
this.fileService = fileService;
SetFolders();
}
private async void SetFolders ()
{
FoldersList = await fileService.GetFoldersAsync();
}
private IEnumerable< IStorageFolder > foldersList;
public IEnumerable<StorageFolder> FoldersList
{
get { return foldersList; }
private set
{
foldersList = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("FoldersList"));
}
}
}
}
IFileService和实施
public interface IFileService {
Task<IEnumerable<IStorageFolder>> GetFilesAsync();
}
public class FileService : IFileService
{
public async Task<IEnumerable<IStorageFolder>> GetFoldersAsync()
{
var folder = KnownFolders.DocumentsLibrary;
return await folder.GetFoldersAsync();
}
}