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