Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este tópico fornece recomendações de desempenho, além das abordadas pelos tópicos na seção Otimizando o desempenho do aplicativo WPF.
Este tópico contém as seguintes seções:
Opacidade em pincéis versus opacidade em elementos
Quando você usa um Brush para definir a Fill ou Stroke de um elemento, é melhor definir o valor Brush.Opacity em vez de definir a propriedade Opacity do elemento. Modificar a propriedade Opacity de um elemento pode fazer com que o WPF crie uma superfície temporária.
Navegação para o objeto
O objeto NavigationWindow deriva de Window e o estende com suporte à navegação de conteúdo, principalmente agregando NavigationService e o diário. Você pode atualizar a área do cliente do NavigationWindow especificando um URI (identificador de recurso uniforme) ou um objeto. O exemplo a seguir mostra ambos os métodos:
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;
}
Private Sub buttonGoToUri(ByVal sender As Object, ByVal args As RoutedEventArgs)
navWindow.Source = New Uri("NewPage.xaml", UriKind.RelativeOrAbsolute)
End Sub
Private Sub buttonGoNewObject(ByVal sender As Object, ByVal args As RoutedEventArgs)
Dim nextPage As New NewPage()
nextPage.InitializeComponent()
navWindow.Content = nextPage
End Sub
Cada objeto NavigationWindow tem um diário que registra o histórico de navegação do usuário nessa janela. Um dos objetivos da revista é permitir que os usuários refaçam seus passos.
Quando você navega usando um URI (identificador de recurso uniforme), o diário armazena apenas a referência de URI (identificador de recurso uniforme). Isso significa que cada vez que você revisita a página, ela é reconstruída dinamicamente, o que pode ser demorado, dependendo da complexidade da página. Neste caso, o custo de armazenamento do diário é baixo, mas o tempo para reconstituir a página é potencialmente alto.
Quando você navega usando um objeto, o diário armazena toda a árvore visual do objeto. Isso significa que cada vez que você revisita a página, ela é renderizada imediatamente sem ter que ser reconstruída. Neste caso, o custo de armazenamento do diário é alto, mas o tempo para reconstituir a página é baixo.
Ao usar o objeto NavigationWindow, você precisará ter em mente como o suporte de registro no diário afeta o desempenho do seu aplicativo. Para obter mais informações, consulte Visão geral da navegação .
Teste de acerto em grandes superfícies 3D
O teste de colisão em grandes superfícies 3D é uma operação muito intensiva em termos de consumo de CPU. Isto é especialmente verdadeiro quando a superfície 3D está animando. Caso não necessite de testes de colisão nessas superfícies, desative os testes de colisão. Os objetos derivados de UIElement podem desativar o teste de colisão definindo a propriedade IsHitTestVisible como false.
Evento CompositionTarget.Rendering
O evento CompositionTarget.Rendering faz com que o WPF seja animado continuamente. Se tu usares este evento, desvincula-o sempre que tenhas oportunidade.
Evite usar ScrollBarVisibility=Auto
Sempre que possível, evite usar o valor ScrollBarVisibility.Auto para as propriedades HorizontalScrollBarVisibility e VerticalScrollBarVisibility. Essas propriedades são definidas para objetos RichTextBox, ScrollViewere TextBox e como uma propriedade anexada para o objeto ListBox. Em vez disso, defina ScrollBarVisibility como Disabled, Hiddenou Visible.
O valor Auto destina-se aos casos em que o espaço é limitado e as barras de rolagem só devem ser exibidas quando necessário. Por exemplo, pode ser útil usar esse valor de ScrollBarVisibility com uma ListBox de 30 itens em vez de um TextBox com centenas de linhas de texto.
Configurar o serviço de cache de fontes para reduzir o tempo de inicialização
O serviço WPF Font Cache compartilha dados de fonte entre aplicativos WPF. O primeiro aplicativo WPF executado iniciará este serviço se o serviço ainda não estiver em execução. Se você estiver usando o Windows Vista, você pode definir o serviço "Windows Presentation Foundation (WPF) Font Cache 3.0.0.0" de "Manual" (o padrão) para "Automático (início atrasado)" para reduzir o tempo de inicialização inicial de aplicativos WPF.
Ver também
.NET Desktop feedback