首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将XML数据异步加载和绑定到TreeView?

如何将XML数据异步加载和绑定到TreeView?
EN

Stack Overflow用户
提问于 2012-01-30 16:36:42
回答 2查看 1.1K关注 0票数 1

我使用以下代码将XML文件绑定到WPF TreView:

代码语言:javascript
复制
XmlDocument XMLdoc = new XmlDocument();
try
{
     XMLdoc.Load(file);
     XmlDataProvider provider = new XmlDataProvider();
     provider.Document = XMLdoc;
     Binding binding = new Binding();
     binding.Source = provider;
     binding.XPath = "child::node()";
     xmlTree.SetBinding(TreeView.ItemsSourceProperty, binding);
}
catch (XmlException)
{
  MessageBox.Show("The XML file is invalid");
  return;
}

我不能说XML太大,但是在WPF TreeView下绑定和显示XML数据需要超过1分钟的时间。

我的问题是:有什么可以优化的地方吗?

(注意:最后的想法是在WPF应用程序下显示XML。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-30 12:28:37

我也遇到了同样的问题,并通过将TreeView属性"VirtualizingStackPanel.IsVirtualizing“设置为"true”来解决它。

票数 1
EN

Stack Overflow用户

发布于 2012-01-30 17:19:32

没有前面的代码和XML文件,我只能看一下这里的内容,我看到的是,您首先将一个稍微复杂和大的XML文件加载到内存中,然后再将GUI绑定到内存中,所有这些都是顺序的。

在某种程度上,您将不得不支付这些昂贵和耗时的操作的风笛手,但您至少可以使您的GUI响应时,它的负载。我将研究使用BackgroundWorker加载,甚至可能使用绑定(这是我需要看更多,以确定)。

这里有一个博客帖子,它讨论XMLDataProvider和后台工作人员,尽管它的上下文与您的略有不同。不管怎样,它应该会给你一些工作的机会。这里的主题是,您希望采取昂贵的操作,并在后台执行操作,而不阻塞所有的进度,以便至少您的GUI能够响应用户。也就是说,您可以让GUI显示进度条、沙漏鼠标图标等,同时进行昂贵的加载和绑定。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9067319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档