вот в чем дело:
У меня есть проект, в котором настроены мои меню / ContextMenu / MenuItems.
так что в основном у меня есть пара файлов MyMenuItem.xaml / MyMenuItem.xaml.cs с моим файлом MyMenuItem.xaml, содержащим некоторые ресурсы + стиль и шаблон.
проблема: моему contextMenu (довольно большому, я признаю, но все же ...) потребовалось около 14 секунд для загрузки (!!)
Я сделал некоторое профилирование и обнаружил, что эта строка: MyMenuItem item = new MyMenuItem();
заняла 65% UC за эти 14 секунд. Поэтому я попытался избавиться от своих стилей, шаблонов и ресурсов в MyMenuItem.xaml и, действительно, мне потребовалось 0,3 секунды, чтобы загрузить меню. Затем я поместил эти стили / шаблоны в App.xaml, и мне удалось получить дизайн, как я хотел, но с ожидаемой производительностью.
мой вопрос: как получилось?
почему я не могу поместить стили menuItem в мой файл MyMenuItem.xaml, и мне нужно поместить их в App.xaml, чтобы получить хорошие результаты? что здесь происходит, чем я не понимаю?
продвигаясь дальше по этому пути, я делаю вывод, что все мои другие стили для других моих элементов управления могут фактически иметь ту же проблему, поэтому тогда я должен затем поместить все свои шаблоны / стили в App.xaml, что в некотором роде противоречит цели имея для каждого элемента управления пару .xaml / .xaml.cs
что я здесь упускаю / делаю неправильно?
edit: на всякий случай, вот макет моего файла 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)