Я работаю над приложением, которое изначально было WinForm, но теперь оно использует окна WPF с пользовательским интерфейсом.Взаимодействие все работает прекрасно, но когда окна WPF впервые показываются, их отображение занимает довольно много времени (около 1-3 секунд).Настолько долго, что некоторые задаются вопросом, не сломалось ли приложение (пока не отобразится содержимое).Во второй раз, когда те же окна вызываются, они быстро появляются.Мне нужно, чтобы они быстро появились в первый раз.
Я использую стили и шаблоны управления, которые расположены в виде XAML в папке ресурсов.Затем в XAML для окон WPF я объединяю их в словарь ресурсов Windows.Действие Build для них (в VS 2010) должно быть установлено на «Resource».Предпочтительно я хочу хранить их в отдельных файлах для удобства обслуживания.Насколько я понимаю, если бы действие сборки было "Page", XAML был бы предварительно скомпилирован и должен загружаться быстрее, но если я установил его на страницу, я не смогу объединить их в словарь ресурсов.Есть ли способ обойти это?
Я довольно новичок в этой части WPF и пока мой поиск в интернете не увенчался успехом.
Для ясности: я не говорю о встроенных в WinForms элементах управления WPF.Я говорю о совершенно отдельных окнах WPF, которые порождаются из контекста WinForm.
Есть ли способ предварительно скомпилировать все приложение или хотя бы весь XAML (все это статично, без динамического XAML)?
Заранее спасибо!
Редактировать: Интерфейсы не тяжелые.У рассматриваемых есть от 5 до 20 кнопок и обычные контейнеры (в основном это сетка с 1 или 2 стековыми панелями).
Обновление: я пробовал прекомпиляцию с "NGEN install appname" - не влияет наЗагрузка окна WPF.
Я включил все ресурсы и шаблоны в window.xaml - безрезультатно.(window.xaml предварительно скомпилирован)
Я нашел эту действительно интересную статью о предварительном подключении при загрузке приложения здесь:
http://www.codeproject.com/KB/dotnet/pre_JIT.aspx (я использовал улучшение, предложенное 'ittay ophir ')
- снова: не влияет на загрузку окна WPF ...
Время загрузки просто не изменится при первой загрузке, но значительно уменьшится привсе последовательные нагрузки (нагрузки не более 20 мс).
Какого черта здесь происходит?