WPF предварительно скомпилированные ресурсы в приложении WinForm? - PullRequest
4 голосов
/ 18 марта 2011

Я работаю над приложением, которое изначально было 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 мс).

Какого черта здесь происходит?

1 Ответ

0 голосов
/ 18 марта 2011

Как насчет загрузки XAML асинхронно, используя XamlReader.LoadAsync Метод?

...