這裏的東西:爲什麼將資源放入我的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