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 に答える