Правильный дизайн окон XAML (производительность) - PullRequest
1 голос
/ 29 октября 2010

Я сделал приложение, которое показывает списки клиентов. Вы можете открыть клиента, и его данные будут показаны.

Мое приложение запускается довольно долго, поэтому я хочу улучшить производительность при запуске.

В псевдокоде мое главное окно выглядит так

<Window>
    <c:WelcomeAnimation Visibility="Visible" />
    <c:ClientList Visibility="Collapsed" />
    <c:ClientDetails Visibility="Collapsed" />
</Window>

Теперь, перед тем, как показано главное окно, я вижу, что ClientList и ClientDetails инициализированы. Это отнимает много времени, поэтому я хочу отложить инициализацию и сделать это, когда отображается главное окно и работает WelcomeAnimation.

Это даст хотя бы ощущение, что приложение запускается быстрее.

Вопрос: Какие у меня варианты в оформлении окон. Мне нравится иметь вышеупомянутое представление XAML. Конечно, я могу делать все в коде позади, поэтому мое главное окно XAML будет не более чем

<Window /> 

но, может быть, есть лучшие варианты, о которых я не знаю?

1 Ответ

0 голосов
/ 29 октября 2010

Это зависит.Когда время запуска происходит из-за кода, который вы написали сами (например, для вызова веб-служб или для извлечения данных из базы данных), не выполняйте этот код при инициализации, но запустите фоновую задачу потока / ThreadPool и запустите код там.

Когда время запуска на самом деле просто из-за загрузки элемента управления (например, это очень сложный элемент управления с большим количеством визуальных элементов), у вас есть два варианта.Либо вставьте заменяющую панель вместо элемента управления и заполните ее, как только отобразится анимация.Второй вариант - просто прикусить пулю.

Еще одна вещь, на которую стоит обратить внимание.Если время запуска на самом деле связано с огромным количеством визуальных элементов, инициализацию все равно придется выполнять в потоке пользовательского интерфейса, поэтому анимация не будет воспроизводиться при загрузке элемента управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...