WPF优化:xaml中的逻辑树,它们是如何构建的?

WPF优化:xaml中的逻辑树,它们是如何构建的?,wpf,optimization,logical-tree,Wpf,Optimization,Logical Tree,我一直在分析我的应用程序,发现很多延迟都是由于WPF初始化造成的。我发现一篇文章说,自顶向下构建逻辑树比自下而上构建逻辑树的性能更好。本文中的例子是C#。我想知道,当用户界面在XAML中完成时,它是如何构建树的 在XAML中完成时,它是自上而下完成的 本文涉及从代码构建树。您希望添加顶级元素,然后添加子元素,然后添加它们的子元素,依此类推。如果先添加子元素,然后添加父元素,然后添加它们的父元素,等等,那么由于树中的所有子元素无效,而不仅仅是通过每个父元素返回到根的路径无效,您将产生巨大的性能代价

我一直在分析我的应用程序,发现很多延迟都是由于WPF初始化造成的。我发现一篇文章说,自顶向下构建逻辑树比自下而上构建逻辑树的性能更好。本文中的例子是C#。我想知道,当用户界面在XAML中完成时,它是如何构建树的

在XAML中完成时,它是自上而下完成的

本文涉及从代码构建树。您希望添加顶级元素,然后添加子元素,然后添加它们的子元素,依此类推。如果先添加子元素,然后添加父元素,然后添加它们的父元素,等等,那么由于树中的所有子元素无效,而不仅仅是通过每个父元素返回到根的路径无效,您将产生巨大的性能代价

自上而下建造您的树

当一个节点 从逻辑数据库中添加或删除 树,属性无效是 在节点的父级和所有 它的孩子。因此,自上而下的 构建模式应始终保持一致 遵循以避免成本 节点上不必要的失效 这已经得到了验证


在XAML中完成时,它是自上而下完成的

本文涉及从代码构建树。您希望添加顶级元素,然后添加子元素,然后添加它们的子元素,依此类推。如果先添加子元素,然后添加父元素,然后添加它们的父元素,等等,那么由于树中的所有子元素无效,而不仅仅是通过每个父元素返回到根的路径无效,您将产生巨大的性能代价

自上而下建造您的树

当一个节点 从逻辑数据库中添加或删除 树,属性无效是 在节点的父级和所有 它的孩子。因此,自上而下的 构建模式应始终保持一致 遵循以避免成本 节点上不必要的失效 这已经得到了验证


我想知道,假设我添加了一个网格,然后添加了它的子网格,难道网格不会因为它的子网格而失效,并且必须再次通过布局过程吗?然后,对于每个添加到树中的子项,可能会再次使父项无效,一直走到树上。如果它是自下而上构建的,这不是会更好吗?我想知道,假设我添加了一个网格,然后添加了它的子网格,那么网格不会因为它的子网格而失效,并且必须再次通过布局过程吗?然后,对于每个添加到树中的子项,可能会再次使父项无效,一直走到树上。如果它是自下而上建造的,不是会更好吗?