我使用以下代码将XML文件绑定到WPF TreView:
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。)
发布于 2012-07-30 12:28:37
我也遇到了同样的问题,并通过将TreeView属性"VirtualizingStackPanel.IsVirtualizing“设置为"true”来解决它。
发布于 2012-01-30 17:19:32
没有前面的代码和XML文件,我只能看一下这里的内容,我看到的是,您首先将一个稍微复杂和大的XML文件加载到内存中,然后再将GUI绑定到内存中,所有这些都是顺序的。
在某种程度上,您将不得不支付这些昂贵和耗时的操作的风笛手,但您至少可以使您的GUI响应时,它的负载。我将研究使用BackgroundWorker加载,甚至可能使用绑定(这是我需要看更多,以确定)。
这里有一个博客帖子,它讨论XMLDataProvider和后台工作人员,尽管它的上下文与您的略有不同。不管怎样,它应该会给你一些工作的机会。这里的主题是,您希望采取昂贵的操作,并在后台执行操作,而不阻塞所有的进度,以便至少您的GUI能够响应用户。也就是说,您可以让GUI显示进度条、沙漏鼠标图标等,同时进行昂贵的加载和绑定。
https://stackoverflow.com/questions/9067319
复制相似问题