2013-03-11 147 views
0

我是新手在WinRT的开发显示数据。我试图将数据从我的数据源绑定到ListView。但是有问题,当我使用列表视图有时不从我DataSource.cs

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

,如果我用这个代码,然后应用程序有时不显示ListView中的数据(它是真正随机的,有时它显示一切正常,有时不显示ListView中什么)。

当我删除这个数据源代码,然后everithing效果很好。

我有这个数据源类(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; } 
} 

回答

1

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

而且你也应该不叫从构造async方法,以获取更多信息,请阅读Stephen Cleary's article about that

+0

谢谢你的反应,这是韦里乐于助人,但我怎么能存取权限存储文件,而无需FileIO.ReadTextAsync? – Earlgray 2013-03-11 22:03:35

+0

@ user1128073我没有说你不应该使用它。 – svick 2013-03-11 22:07:55

+0

我有点困惑:)我试着从文章你在你的邮寄一些代码的变化,但问题仍然在这里。我可能做错了什么。你能给我一个样本,我的数据源代码应该怎么看? – Earlgray 2013-03-11 22:16:52