为什么在WPF中将资源放在APP.xaml中而不是MyClass.xaml中更快?

| 这是东西: 我有一个菜单/ ContextMenu / MenuItems为模板的项目。 所以基本上我有一个MyMenuItem.xaml / MyMenuItem.xaml.cs文件以及我的MyMenuItem.xaml文件,其中包含一些资源+样式和模板。 问题:我的contextMenu(我承认相当大,但仍然...)花费了大约14秒的加载时间(!!) 我进行了一些分析,发现这一行:
MyMenuItem item = new MyMenuItem();
在那14秒内占据了UC的65%。因此,我尝试摆脱MyMenuItem.xaml中的样式,模板和资源,实际上,我花了0.3秒的时间来加载菜单。因此,然后我将这些样式/模板放入App.xaml中,并设法获得所需的设计,但具有预期的性能。 我的问题是:怎么会? 为什么不能将menuItem样式放入MyMenuItem.xaml文件中,而必须将它们放入App.xaml中才能获得良好的性能?比我不理解的这里发生了什么? 再往前走,我推断出我其他控件的所有其他样式实际上可能都存在相同的问题,因此我应该将所有模板/样式放在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>
问题出在everything2ѭ中(包括样式1,2和3)     
已邀请:
        如果在菜单级别声明资源,则将为菜单的每个实例创建这些资源。在应用程序级别对其进行声明,将创建一个资源实例并在所有菜单之间共享。基本上,您希望将资源尽可能地移到逻辑树上,以便最大程度地共享这些资源。 就是说,14听起来太过分了,所以我只能假设您那里有很多相当庞大的资源。     

要回复问题请先登录注册