Ottimizzazione delle prestazioni: altri suggerimentiOptimizing Performance: Other Recommendations

Questo argomento offre suggerimenti sulle prestazioni aggiuntivi rispetto a quelli descritti negli argomenti della sezione Ottimizzazione delle prestazioni di applicazioni WPF.This topic provides performance recommendations in addition to the ones covered by the topics in the Optimizing WPF Application Performance section.

Di seguito sono elencate le diverse sezioni di questo argomento:This topic contains the following sections:

Pennelli opachi ed elementi opachiOpacity on Brushes Versus Opacity on Elements

Quando si utilizza un Brush per impostare il Fill o Stroke di un elemento, si consiglia di impostare il Brush.Opacity valore anziché l'impostazione dell'elemento Opacity proprietà.When you use a Brush to set the Fill or Stroke of an element, it is better to set the Brush.Opacity value rather than the setting the element's Opacity property. Modifica di un elemento Opacity può causare proprietà WPFWPF per creare un'area temporanea.Modifying an element's Opacity property can cause WPFWPF to create a temporary surface.

Il NavigationWindow oggetto deriva da Window e la estende con supporto di spostamento del contenuto, principalmente tramite l'aggregazione NavigationService e le registrazioni.The NavigationWindow object derives from Window and extends it with content navigation support, primarily by aggregating NavigationService and the journal. È possibile aggiornare l'area client di NavigationWindow specificando un Uniform Resource Identifier (URI)uniform resource identifier (URI) o un oggetto.You can update the client area of NavigationWindow by specifying either a Uniform Resource Identifier (URI)uniform resource identifier (URI) or an object. L'esempio seguente illustra entrambi i metodi:The following sample shows both methods:

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

Ogni NavigationWindow oggetto dispone di un giornale di registrazione che registra la cronologia di navigazione dell'utente in tale finestra.Each NavigationWindow object has a journal that records the user's navigation history in that window. Uno degli scopi del journal è quello di consentire agli utenti di rintracciare i passaggi eseguiti.One of the purposes of the journal is to allow users to retrace their steps.

Con la navigazione tramite un Uniform Resource Identifier (URI)uniform resource identifier (URI), il journal archivia solo il riferimento all'Uniform Resource Identifier (URI)uniform resource identifier (URI).When you navigate using a Uniform Resource Identifier (URI)uniform resource identifier (URI), the journal stores only the Uniform Resource Identifier (URI)uniform resource identifier (URI) reference. Ogni volta che viene rivisitata, la pagina viene ricostruita in modo dinamico; questa operazione può richiedere molto tempo, a seconda della complessità della pagina.This means that each time you revisit the page, it is dynamically reconstructed, which may be time consuming depending on the complexity of the page. In questo caso, il costo di archiviazione nel journal è basso, ma il tempo necessario per la ricostruzione della pagina è potenzialmente lungo.In this case, the journal storage cost is low, but the time to reconstitute the page is potentially high.

Con la navigazione tramite un oggetto, nel journal viene archiviata l'intera struttura ad albero visiva dell'oggetto.When you navigate using an object, the journal stores the entire visual tree of the object. Ogni volta che la pagina viene rivisitata, quindi, ne viene immediatamente eseguito il rendering, senza che debba essere ricostruita.This means that each time you revisit the page, it renders immediately without having to be reconstructed. In questo caso, il costo di archiviazione nel journal è alto, ma il tempo necessario per la ricostruzione della pagina è ridotto.In this case, the journal storage cost is high, but the time to reconstitute the page is low.

Quando si utilizza il NavigationWindow dell'oggetto, è necessario tenere presenti come il supporto di inserimento nel diario influisce sulle prestazioni dell'applicazione.When you use the NavigationWindow object, you will need to keep in mind how the journaling support impacts your application's performance. Per altre informazioni, vedere Cenni preliminari sulla navigazione.For more information, see Navigation Overview.

Hit testing su superfici 3D ampieHit Testing on Large 3D Surfaces

L'hit testing su superfici 3D ampie presenta requisiti particolarmente elevati in termini di consumo della CPU,Hit testing on large 3D surfaces is a very performance intensive operation in terms of CPU consumption. soprattutto se alla superficie 3D viene aggiunta un'animazione.This is especially true when the 3D surface is animating. Se l'hit testing su queste superfici non è necessario, quindi, è opportuno disabilitarlo.If you do not require hit testing on these surfaces, then disable hit testing. Gli oggetti che derivano da UIElement possibile disabilitare l'hit test impostando il IsHitTestVisible proprietà false.Objects that are derived from UIElement can disable hit testing by setting the IsHitTestVisible property to false.

Evento CompositionTarget.RenderingCompositionTarget.Rendering Event

Il CompositionTarget.Rendering evento causa WPFWPF animare continuamente.The CompositionTarget.Rendering event causes WPFWPF to continuously animate. Se si usa questo evento, disconnetterlo ogni volta che è possibile.If you use this event, detach it at every opportunity.

Evitare l'uso di ScrollBarVisibility=AutoAvoid Using ScrollBarVisibility=Auto

Quando possibile, evitare di utilizzare il ScrollBarVisibility.Auto valore per il HorizontalScrollBarVisibility e VerticalScrollBarVisibility proprietà.Whenever possible, avoid using the ScrollBarVisibility.Auto value for the HorizontalScrollBarVisibility and VerticalScrollBarVisibility properties. Queste proprietà vengono definite per RichTextBox, ScrollViewer, e TextBox oggetti e come una proprietà associata per il ListBox oggetto.These properties are defined for RichTextBox, ScrollViewer, and TextBox objects, and as an attached property for the ListBox object. Al contrario, impostare ScrollBarVisibility a Disabled, Hidden, o Visible.Instead, set ScrollBarVisibility to Disabled, Hidden, or Visible.

Il Auto valore viene utilizzato per i casi, quando lo spazio è limitato e le barre di scorrimento devono essere visualizzate solo quando necessario.The Auto value is intended for cases when space is limited and scrollbars should only be displayed when necessary. Ad esempio, può essere utile usare questa ScrollBarVisibility valore con un ListBox di 30 elementi in contrapposizione a un TextBox con centinaia di righe di testo.For example, it may be useful to use this ScrollBarVisibility value with a ListBox of 30 items as opposed to a TextBox with hundreds of lines of text.

Configurare il servizio Cache tipi di carattere per ridurre il tempo di avvioConfigure Font Cache Service to Reduce Start-up Time

Con il servizio Cache tipi di carattere di WPFWPF, i dati relativi ai tipi di carattere vengono condivisi tra le applicazioni WPFWPF.The WPFWPF Font Cache service shares font data between WPFWPF applications. Il servizio viene avviato insieme alla prima applicazione WPFWPF eseguita, a meno che non sia già in esecuzione.The first WPFWPF application you run starts this service if the service is not already running. Se si utilizza Windows VistaWindows Vista, è possibile impostare il servizio "Cache Windows Presentation Foundation (WPF) del tipo di carattere 3.0.0.0" da "Manuale" (predefinito) su "Automatico (avvio ritardato)" per ridurre il tempo di avvio di WPFWPF applicazioni.If you are using Windows VistaWindows Vista, you can set the "Windows Presentation Foundation (WPF) Font Cache 3.0.0.0" service from "Manual" (the default) to "Automatic (Delayed Start)" to reduce the initial start-up time of WPFWPF applications.

Vedere ancheSee Also

Pianificazione delle prestazioni dell'applicazionePlanning for Application Performance
Sfruttare appieno l'hardwareTaking Advantage of Hardware
Ottimizzazione delle prestazioni: layout e progettazioneLayout and Design
Grafica bidimensionale e creazione di immagini2D Graphics and Imaging
Comportamento dell'oggettoObject Behavior
Risorse di applicazioniApplication Resources
perText
Data bindingData Binding
Suggerimenti sulle animazioniAnimation Tips and Tricks