Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale.
Traduzione
Originale
Questo argomento non è stato ancora valutato - Valuta questo argomento

Novità in WPF versione 4.5 RC

[Questa documentazione ha solo scopo di anteprima ed è soggetta a modifiche nelle versioni successive. Gli argomenti vuoti sono inclusi come segnaposto.]

Viene fornito WPF 4,5 con una proprietà Ribbon controllare che ospita una barra di accesso rapido, un menu dell'applicazione e nelle schede. Per ulteriori informazioni, vedere Cenni preliminari sulla barra multifunzione.

La virtualizzazione dell'interfaccia utente si verifica quando un sottoinsieme degli (UI) elementi dell'interfaccia utente viene generato da un gran numero di elementi di dati basati su quali elementi sono visibili sullo schermo. VirtualizingPanel definisce IsVirtualizingWhenGrouping proprietà associata che consente la virtualizzazione dell'interfaccia utente per i dati raggruppati. Per ulteriori informazioni sui dati di raggruppamento, vedere procedura: Ordinare e raggruppare i dati utilizzando una visualizzazione in XAML. Per ulteriori informazioni sulla virtualizzazione dei dati raggruppati, vedere IsVirtualizingWhenGrouping proprietà associata.

  1. È possibile specificare se a VirtualizingPanel, ad esempio VirtualizingStackPanel, elementi parziali delle visualizzazioni selezionando ScrollUnit proprietà associata. se ScrollUnit è impostato su Item, VirtualizingPanel verranno visualizzati solo gli elementi che sono completamente visibili. se ScrollUnit è impostato su Pixel, VirtualizingPanel è possibile visualizzare gli elementi visibili parzialmente.

  2. È possibile specificare la dimensione della cache prima e dopo il riquadro di visualizzazione quando VirtualizingPanel è virtualizzando tramite CacheLength proprietà associata. La cache è la quantità di spazio sopra o sotto il riquadro di visualizzazione in cui gli elementi non sono virtualizzate. Utilizzo di una cache evitare di generare gli elementi di interfaccia utente mentre vengono spostati nella visualizzazione può migliorare le prestazioni. La cache viene popolato con una priorità più bassa in modo che l'applicazione non diventa risponde durante l'operazione. VirtualizingPanel.CacheLengthUnit la proprietà determina l'unità di misura utilizzata da VirtualizingPanel.CacheLength.

È possibile utilizzare le proprietà statiche come origine di associazione dati. Il motore di associazione dati riconosce quando cambia il valore della proprietà se un evento statico viene generato. Ad esempio, se la classe SomeClass definisce una proprietà statica chiamata MyProperty, SomeClass è possibile definire un evento statico di cui viene generato quando il valore MyProperty modifiche. L'evento statico può utilizzare una delle firme.

  • public static event EventHandler MyPropertyChanged;

  • public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;

Si noti che nel primo caso, la classe espone un evento statico denominato NomeproprietàChanged che passa EventArgs nel gestore eventi. Nel secondo caso, la classe espone un evento statico denominato StaticPropertyChanged che passa PropertyChangedEventArgs nel gestore eventi. Una classe che implementa la proprietà statica possibile scegliere per generare notifiche di variazione delle proprietà utilizzando qualsiasi metodo.

WPF consente di visualizzare e modificare le raccolte di dati sui thread diverso da quello che ha creato la raccolta. Questo consente di utilizzare un thread in background per ricevere i dati da un'origine esterna, ad esempio un database e visualizzare i dati sul thread UI. Utilizzando un altro thread per modificare la raccolta, l'interfaccia utente risponderà all'utente.

INotifyDataErrorInfo l'interfaccia consente alle classi di entità di dati per implementare le regole di convalida personalizzate e per esporre i risultati di convalida in modo asincrono. Questa interfaccia supporta inoltre gli oggetti di errore personalizzato, più errori per proprietà, gli errori di croce-proprietà e degli errori livelli di entità. Per ulteriori informazioni, vedere INotifyDataErrorInfo.

Se si utilizza un'associazione dati per aggiornare un'origine dati, è possibile utilizzare Delay proprietà per specificare un periodo di tempo alla sessione dopo aver modificato la proprietà del database di destinazione prima degli aggiornamenti dell'origine. Ad esempio, si supponga di avere a Slider che presenta Value limite bidirezionale di dati della proprietà a una proprietà di un oggetto dati e UpdateSourceTrigger la proprietà è impostata su PropertyChanged. In questo esempio, quando l'utente allontana Slider, gli aggiornamenti del database di origine per ogni pixel che Slider movimenti. L'oggetto di origine in genere richiede il valore del dispositivo di scorrimento solo quando il dispositivo di scorrimento Value il termine della modifica. Per impedire aggiornare il database di origine troppo frequente, utilizzare Delay per specificare che l'origine non deve essere aggiornato finché una certa quantità di tempo non trascorra dopo che il cursore termine dello spostamento.

WPF supporta l'associazione dati a oggetti che implementano ICustomTypeProvider, noto anche come tipi personalizzati. È possibile utilizzare personalizzato tipi nei casi seguenti.

  1. Ad esempio PropertyPath nell'associazione dati. Ad esempio, Path proprietà di un oggetto Binding può fare riferimento a una proprietà di un tipo personalizzato.

  2. Come valore di DataType proprietà.

  3. Come tipo che determina le colonne generate automaticamente in un oggetto DataGrid.

In alcuni casi, è possibile ottenere BindingExpression la proprietà di un oggetto Binding e di disporre sul database di origine e gli oggetti di destinazione di associazione. I nuovi API sono stati aggiunti per consentire di ottenere l'origine o l'oggetto di destinazione o la proprietà associata. Quando si dispone di un oggetto BindingExpression, utilizzare i seguenti API per ottenere informazioni sull'origine e destinazione.

Per trovare il valore dell'associazione

Utilizzare questa API

l'oggetto di destinazione

BindingExpressionBase.Target

la proprietà di destinazione

BindingExpressionBase.TargetProperty

l'oggetto di origine

BindingExpression.ResolvedSource

la proprietà di origine

BindingExpression.ResolvedSourcePropertyName

se BindingExpression appartiene a un oggetto BindingGroup

BindingExpressionBase.BindingGroup

Il proprietario di un oggetto BindingGroup

Owner

Vi sono casi in cui DataContext di un contenitore di elementi in ItemsControl diventa disconnesso. Un contenitore di elementi è l'elemento dell'interfaccia utente che visualizza un elemento in ItemsControl. quando ItemsControl viene associato a dati a una raccolta, un contenitore di elementi viene generato per ogni elemento. In alcuni casi, i contenitori di elementi vengono rimossi dalla struttura ad albero visuale. Due casi tipici in cui un contenitore di elementi viene rimosso vengono quando un elemento viene rimosso dalla raccolta sottostante e quando la virtualizzazione è abilitata in ItemsControl. in questi casi, DataContext la proprietà del contenitore di elementi verrà impostata all'oggetto sentinel restituito dal BindingOperations.DisconnectedSource proprietà statica. È necessario controllare se DataContext è uguale a DisconnectedSource oggetto prima di accedere a DataContext di un contenitore di elementi.

Una raccolta di dati può essere raggruppati, ordinato, o essere filtrata. WPF 4,5 abilita i dati da ridisporre quando i dati vengono modificati. Ad esempio, si supponga che un'applicazione utilizzi un oggetto DataGrid per elencare le azioni in un mercato azione e le azioni vengono ordinate in base al valore predefinito. Se attivo l'ordinamento è abilitato le azioni CollectionView, la posizione delle azioni in DataGrid si verifica quando il valore delle azioni diventa maggiore o minore del valore di altre operazioni. Per ulteriori informazioni, vedere l'interfaccia ICollectionViewLiveShaping.

WPF 4,5 consente di migliorare l'integrazione tra i componenti dell'interfaccia utente WPF e Win32. IsRedirected() la proprietà è stata aggiunta e indica se HwndHost possibile comporre il contenuto della finestra Win32 con il resto del contenuto WPF. utilizzare IsRedirected proprietà, con CompositionMode proprietà, specificare come interfacce utente WPF e Win32 devono essere inserite. Utilizzare queste proprietà per integrare WPF a un Windows Form, Win32, o Direct3D9. Per ulteriori informazioni, vedere Migrazione e interoperabilità.

Implementare il modello di evento debole è più semplice perché i sottoscrittori agli eventi possono partecipare senza implementare un'interfaccia aggiuntiva. L'oggetto generico WeakEventManager la classe consente inoltre ai sottoscrittori di partecipare al modello di evento debole se un oggetto WeakEventManager non esiste per un determinato evento. Per ulteriori informazioni, vedere Modelli di eventi deboli.

La classe del dispatcher definisce i nuovi metodi per sincrono e le operazioni asincrone. La forma sincrona Invoke il metodo definisce gli overload che accettano Action o Func<TResult> parametro. il nuovo metodo asincrono, InvokeAsync, accetta Action o Func<TResult> come parametro e restituisce di callback a DispatcherOperation o DispatcherOperation<TResult>. DispatcherOperation e DispatcherOperation<TResult> le classi definiscono un' Task proprietà. Quando si chiama InvokeAsync, è possibile utilizzare await parola chiave con uno DispatcherOperation o l'oggetto associato Task. Se è necessario attendere in modo sincrono Task che viene restituito da un oggetto DispatcherOperation o DispatcherOperation<TResult>, chiamare DispatcherOperationWait metodo di estensione. chiamare Task.Wait restituisce un deadlock se l'operazione è in coda in un thread chiamante. Per ulteriori informazioni sull'utilizzo a Task per eseguire operazioni asincrone, vedere Parallelismo fra attività (Task Parallel Library).

Estensioni di markup supporti WPF 4,5 per gli eventi. In WPF non definisce un'estensione di markup da utilizzare per gli eventi, le terze parti possono creare un'estensione di markup che può essere utilizzata con gli eventi.

Il documento è risultato utile?
(1500 caratteri rimanenti)