0

我是 WinRT 开发的新手。我正在尝试将数据从我的数据源绑定到 ListView。但是我用的时候有问题

var file = await ApplicationData.Current.LocalFolder.GetFileAsync("tasks.xml");
var readStream = await FileIO.ReadTextAsync(file);

如果我使用此代码,则应用程序有时不会在 ListView 中显示该数据(它确实是随机的,有时它显示一切正常,有时在 ListView 中不显示任何内容)。

当我从数据源中删除此代码时,一切正常。

我有这个数据源类(DataSource.cs)

public class InboxPageViewModel
{
    public List<Task> Items { get; set; }

    public InboxPageViewModel()
    {
        GetTasks();
    }

    private async void GetTasks()
    {
        try
        {
            var file = await ApplicationData.Current.LocalFolder.GetFileAsync("tasks.xml");
            var readStream = await FileIO.ReadTextAsync(file);

            var tasksList = new List<Task>
            {
                new Task { Name = "a", DueDate = "b", Project = "c", Context = "d"},
            };

            Items = tasksList;
        }
        catch (Exception ex)
        {
            new MessageDialog(ex.Message).ShowAsync();
        }
    }
}

public class Task
{
    public string Name { get; set; }
    public string Category { get; set; }
    public string DueDate { get; set; }
    public string Project { get; set; }
    public string Context { get; set; }
    public string Note { get; set; }
    public string IsFinished { get; set; }
}
4

1 回答 1

1

您永远不应该使用async void方法(除非您正在编写事件处理程序)。

而且您也不应该async从构造函数中调用方法,有关更多信息,请阅读Stephen Cleary 的文章

于 2013-03-11T21:52:11.457 回答