Оптимизация производительности: Другие рекомендации
В этом разделе содержатся рекомендации по улучшению производительности в дополнение к описанным в разделах статьи Улучшение производительности приложений WPF.
В этом разделе содержатся следующие подразделы.
Проверка попадания курсора мыши на больших трехмерных поверхностях
Настройка службы кэширования шрифтов для сокращения времени загрузки
Сравнение прозрачности кисти с прозрачностью элементов
При использовании Brush присвоить Fill или Stroke элемента, лучше задать Brush.Opacity преимущества, а не параметр элемента Opacity свойство. Изменение элемента Opacity свойство может привести к WPF создание временной поверхности.
Переход к объекту
NavigationWindow Объект является производным от Window и расширяет его поддержкой навигации по содержимому, главным образом путем объединения NavigationService и журнала. Вы можете обновить клиентскую область NavigationWindow , если указать URI или объект. В следующем примере демонстрируются оба способа.
private void buttonGoToUri(object sender, RoutedEventArgs args)
{
navWindow.Source = new Uri("NewPage.xaml", UriKind.RelativeOrAbsolute);
}
private void buttonGoNewObject(object sender, RoutedEventArgs args)
{
NewPage nextPage = new NewPage();
nextPage.InitializeComponent();
navWindow.Content = nextPage;
}
Каждый NavigationWindow объект имеет журнал, в котором записывается история переходов данного пользователя в этом окне. Одной из целей создания журнала является возможность разрешить пользователям повторять действия.
При навигации с помощью URI журнал сохраняет только ссылку URI. Это означает, что каждый раз при повторном посещении страницы она динамически перестраивается за время, зависящее от сложности страницы. В этом случае затраты на хранение журнала незначительны, а скорость воссоздания страниц является потенциально высокой.
При переходе с помощью объекта в журнал сохраняется полное визуальное дерево объекта. Это означает, что при каждом повторном посещении страницы она отображается немедленно без необходимости реконструирования. В этом случае затраты на хранение журнала высоки, а скорость воссоздания страниц низкая.
При использовании NavigationWindow объекта, необходимо будет следует учитывать влияние журналирования на производительность приложения. Дополнительные сведения см. в разделе Общие сведения о переходах.
Проверка попадания курсора мыши на больших трехмерных поверхностях
Проверка попадания курсора мыши на больших трехмерных поверхностях является операцией, очень затратной по производительности и загрузке процессора. Особенно это относится к анимированным трехмерным поверхностям. Если проверка попадания курсора на этих поверхностях не требуется, то ее следует отключить. Объекты, которые являются производными от UIElement могут отключить проверку, задав IsHitTestVisible свойства false
.
Событие CompositionTarget.Rendering
CompositionTarget.Rendering Событие вызывает WPF для поддержки постоянной анимации. Если это событие используется, отключайте его при каждой возможности.
Избегайте использования ScrollBarVisibility=Auto
По возможности избегайте использования ScrollBarVisibility.Auto значение HorizontalScrollBarVisibility
и VerticalScrollBarVisibility
свойства. Эти свойства определяются для RichTextBox, ScrollViewer, и TextBox объектов и как присоединенное свойство для ListBox объекта. Вместо этого задайте ScrollBarVisibility для Disabled, Hidden, или Visible.
Auto Значение предназначен для случаев, когда пространство ограничено и полосы прокрутки должны отображаться, только когда это необходимо. Например, может быть полезно использовать это ScrollBarVisibility со значением ListBox 30 элементов, в отличие от TextBox с сотнями строк текста.
Настройка службы кэширования шрифтов для сокращения времени загрузки
Служба кэширования шрифтов WPF используется для совместной обработки данных шрифтов приложениями WPF. Первое запускаемое приложение WPF запускает эту службу, если она еще не запущена. Если вы используете Windows Vista, можно задать службы «Windows Presentation Foundation (WPF) Font Cache 3.0.0.0» из «Вручную» (по умолчанию) «Автоматически (отложенный запуск)», чтобы уменьшить длительность начального запуска WPF приложений.