WPF问题与更新

时间:2011-03-29 18:08:27

标签: wpf asynchronous binding mvvm-light

我有一个奇怪的问题。我想知道它是否是.NET组件的标准行为,以及如何处理它 我们的应用程序使用galasoft mvvm light。我有一个带有树视图的表单,它通过异步调用获取数据。为什么异步任务正在运行,我们正在向用户显示进度条。我正在使用ObservableCollection作为我的树结构的集合。现在问题是:

这段代码为我们提供了信息:

public Task<ObservableCollection<FillingTreeNode>> GetTreeStructureAsync(SyncSettings settings)
    {
        SearchRequest request = BuildRequest();
        return searchService.SearchRecordsAsync(request).ContinueWithConversion(
            records => new ObservableCollection<FillingTreeNode>(records
            .Select(cabinet => new FillingTreeNode
            {
                IsChecked = false,
                DisplayName = cabinet.Fields[Fields.CabinetName].Value,
                Node = cabinet.AsFillingNode(FillingNodeType.Cabinet),
                NumberOfNodes = SendXmlRequest(record),
                Children = new ObservableCollection<FillingTreeNode>(GetChildren (record));
    }

}

这是将结果转换为某种新类型的任务扩展:

        public static Task<TNew> ContinueWithConversion<TOld, TNew>(this Task<TOld> task, Func<TOld, TNew> conversionAction)
    {
        return task.ContinueWith(completedTask => conversionAction(task.Result));
    }

现在问题。数据从服务器加载,UI(进度条)表示数据已加载,只有在SendXmlRequest(记录)(等待有点长)之后才开始工作!但我希望它已经完成了。在这些功能完成工作之前,用户什么都看不见 你知道问题的原因是什么吗?这可能是Observable集合的行为吗?我该如何解决? 提前谢谢。

0 个答案:

没有答案