这里的东西:为什么将资源放入我的APP.xaml而不是WPF中的MyClass.xaml更快?
我有一个项目,其中我的菜单/ ContextMenu/MenuItems模板化。
所以基本上我有一个MyMenuItem.xaml/MyMenuItem.xaml.cs文件夫妇含有一些资源+风格和模板我MyMenuItem.xaml文件。
问题:我的文本菜单(相当巨大的,我承认,但仍...)花了大约14sec加载(!!)
我做了一些分析,发现这一行:MyMenuItem item = new MyMenuItem();
了65%的UC对于那些14秒。所以我试图摆脱MyMenuItem.xaml中的样式,模板和资源,事实上,我已经下降到0.3秒来加载菜单。然后我将这些样式/模板放在App.xaml中,并设法按照我的想法获得设计,但是具有预期的性能。
我的问题是:怎么回事?
我怎么就不能把我的菜单项的风格在我MyMenuItem.xaml文件,必须把他们在App.xaml中取得好PERF?这里发生的事情比我不了解的还要多?我推断我的其他控件的所有其他样式实际上可能有相同的问题,因此我应该将所有模板/样式放在App.xaml中,这样就会失去目的其对于每个控制的.xaml/.xaml.cs夫妇
我失去了什么/做错了什么?
编辑:以防万一,这里是我的MyMenuItem.xaml文件的样机:
<MyMenuItem ...>
<MyMenuItem.Resources>
<Style x:Key="Style1" />
<Style x:Key="Style2" />
<Style x:Key="Style3" />
</MyMenuItem.Resources>
<MyMenuItem.Style>
<Style TargetType="MenuItem">
<Setter Property=Template>
<Setter.Value>
<ControlTemplate TargetType="MenuItem">
<!--here I'm using Styles 1,2 and 3-->
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</MyMenuItem.Style>
</MyMenuItem>
,但问题的一切,包括MyMenuItem.Resources
(即:风格1,2和3)
是的,我已经得到了相当沉重的资源,我的菜单包含约400的菜单项(含子菜单等)。但作为一般事物,我觉得有些困惑,我无法将自己的资源放在菜单的层面上,这在维护性方面会更有意义......(也许使用xaml属性将资源标记为Static,以便它只被创建一次)。在这里,我将拥有空的MyClass.xaml文件和一个带有3000行的App.xaml ...这是一种非实际的方式(是的,我知道资源字典,我会用它们来划分我的代码但仍然...) – David 2011-06-14 12:27:08