A)如果我有一个资源可以从用户控件中使用,哪一个在性能方面更好......?
要将其包含在用户控制范围本身中或从 app.xaml 引用资源..?
B) 现在我们拥有从 appl.xaml 引用的所有 100 种样式。将它们移动到各自的用户控件是否值得付出努力..?
A)如果我有一个资源可以从用户控件中使用,哪一个在性能方面更好......?
要将其包含在用户控制范围本身中或从 app.xaml 引用资源..?
B) 现在我们拥有从 appl.xaml 引用的所有 100 种样式。将它们移动到各自的用户控件是否值得付出努力..?
A)如果我有一个资源可以从用户控件中使用,哪一个在性能方面更好......?要将其包含在用户控制范围本身中或从 app.xaml 引用资源..?
由于 XAML 在 BAML 中编译,然后在启动时加载,因此您不会看到差异。现在大多数 XAML 东西都是共享的(即线性画笔、下拉样式),因此最好不要将其直接放在控件上以重用相同的样式并分解
B) 现在我们拥有从 appl.xaml 引用的所有 100 种样式。将它们移动到各自的用户控件是否值得付出努力..?
适得其反,因为您将无法重用它们。
如果您的 XAML 很慢并且您正在使用 MVVM,请检查创建了多少对象。今年我遇到了一个问题,即为每个项目重新创建一个上下文菜单,并将其共享给所有项目(在树视图中)改进了初始化时间。
添加应用程序资源可以让您更好地重用,但它会增加复杂性,因为无法立即清楚哪些页面使用给定资源。
C# 中的 Pro Silverlight 4,作者:Matthew MacDonald
总体而言,它取决于应用范围内资源的重用水平。如果资源被广泛重用 - 则将其放在应用程序资源中。如果您打算只为一个 UserControl 使用样式而不在其他地方使用它 - 那么将这种样式放在 app.xaml 中将是多余的。在我看来,即使资源仅用于 2-3 页,最好将其放在每一页中。
从性能的角度来看 - 我不认为你有这么多可能会损害性能的资源。
以下是可以帮助您缩短加载时间的文章:
更新:
MSDN 在许多情况下都有帮助)阅读本文后,您将获得许多问题的答案:描述性能问题的资源字典
文章: Silverlight XAML 性能问题和共享资源。Resources
我会把它放在最合乎逻辑的地方。如果它是在多个地方使用的东西,或者甚至可能会被多次使用的东西,那么将它放在 app.xaml 中。如果它非常特定于页面/用户控件/窗口,则将其放在那里。