Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se proporcionan recomendaciones de rendimiento además de las que se tratan en los temas de la sección Optimización del rendimiento de aplicaciones de WPF .
Este tema contiene las secciones siguientes:
Opacidad en pinceles frente a opacidad en elementos
Cuando se usa un Brush para establecer el Fill o Stroke de un elemento, es mejor establecer el valor del Brush.Opacity en lugar de establecer la propiedad del Opacity elemento. Modificar la propiedad de Opacity un elemento puede hacer que WPF cree una superficie temporal.
Navegación al objeto
El NavigationWindow objeto se deriva de Window y lo extiende con soporte de navegación de contenido, principalmente mediante la agregación de NavigationService y del diario. Puede actualizar el área de cliente de NavigationWindow especificando un identificador uniforme de recursos (URI) o un objeto . En el ejemplo siguiente se muestran ambos 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 NavigationWindow objeto tiene un diario que registra el historial de navegación del usuario en esa ventana. Uno de los propósitos del diario es permitir que los usuarios recorran sus pasos.
Al navegar mediante un identificador uniforme de recursos (URI), el diario almacena solo la referencia del identificador uniforme de recursos (URI). Esto significa que cada vez que vuelva a visitar la página, se reconstruye dinámicamente, lo que puede llevar mucho tiempo en función de la complejidad de la página. En este caso, el costo de almacenamiento del diario es bajo, pero el tiempo para reconstituir la página es potencialmente alto.
Al navegar mediante un objeto , el diario almacena todo el árbol visual del objeto. Esto significa que cada vez que vuelva a visitar la página, se representa inmediatamente sin tener que reconstruirse. En este caso, el costo de almacenamiento del diario es alto, pero el tiempo para reconstituir la página es bajo.
Al usar el objeto NavigationWindow, debe tener en cuenta cómo el soporte de registro en diario afecta el rendimiento de su aplicación. Para obtener más información, consulte Información general sobre la navegación.
Pruebas de detección de colisiones en superficies 3D grandes
Las pruebas de detección en superficies 3D grandes son una operación que consume mucho rendimiento en términos de consumo de CPU. Esto es especialmente cierto cuando la superficie 3D se está animando. Si no necesita prueba de impacto en estas superficies, entonces deshabilite la prueba de impacto. Los objetos que son derivados de UIElement pueden deshabilitar la detección de impactos configurando la propiedad IsHitTestVisible a false
.
Evento CompositionTarget.Rendering
El evento CompositionTarget.Rendering provoca que WPF se anime continuamente. Si usa este evento, desasocielo en cada oportunidad.
Evitar el uso de ScrollBarVisibility=Auto
Siempre que sea posible, evite usar el valor ScrollBarVisibility.Auto para las propiedades HorizontalScrollBarVisibility
y VerticalScrollBarVisibility
. Estas propiedades se definen para los objetos RichTextBox, ScrollViewer y TextBox, y como una propiedad adjunta para el objeto ListBox. En su lugar, establezca ScrollBarVisibility a Disabled, Hidden, o Visible.
El Auto valor está pensado para casos en los que el espacio está limitado y las barras de desplazamiento solo deben mostrarse cuando sea necesario. Por ejemplo, puede ser útil usar este ScrollBarVisibility valor con un ListBox de 30 elementos en lugar de un TextBox con cientos de líneas de texto.
Configuración del servicio de caché de fuentes para reducir el tiempo de inicio
El servicio de caché de fuentes de WPF comparte datos de fuente entre aplicaciones WPF. La primera aplicación WPF que ejecuta inicia este servicio si el servicio aún no se está ejecutando. Si usa Windows Vista, puede establecer el servicio "Windows Presentation Foundation (WPF) Font Cache 3.0.0.0" de "Manual" (valor predeterminado) en "Automático (inicio retrasado)" para reducir el tiempo de inicio inicial de las aplicaciones WPF.
Consulte también
.NET Desktop feedback