Novità di Windows Presentation Foundation versione 3.5
Aggiornamento: novembre 2007
In questo argomento vengono illustrate le principali differenze tra la versioni 3.0 e 3.5 di Windows Presentation Foundation (WPF).
Nel presente argomento sono contenute le seguenti sezioni.
- Compatibilità con la versione 3.0
- Applicazioni
- Grafica
- Grafica tridimensionale
- Associazione dati
- Controlli
- Documenti
- Annotazioni
- Argomenti correlati
Compatibilità con la versione 3.0
Compatibilità con le versioni precedenti e successive
Un'applicazione compilata con WPF 3.0 può essere eseguita nel runtime di WPF 3.5.
Un'applicazione compilata con WPF 3.5 può essere eseguita nel runtime della versione 3.0 se l'applicazione utilizza unicamente funzionalità disponibili in WPF 3.0.
WPF 3.5 definisce un nuovo spazio dei nomi XML, https://schemas.microsoft.com/netfx/2007/xaml/presentation. Quando si compila un'applicazione tramite WPF 3.5, è possibile utilizzare questo spazio dei nomi oppure lo spazio dei nomi definito in WPF 3.0.
Scelta di una versione specifica di runtime
Le applicazioni compilate con WPF 3.0 possono essere utilizzate in qualsiasi versione del framework superiore o uguale alla versione nella quale sono state originariamente compilate. Per ulteriori informazioni, vedere Procedura: utilizzare un file di configurazione dell'applicazione per una versione specifica di .NET Framework.
Applicazioni
Di seguito vengono riportati i miglioramenti apportati al modello di applicazione:
Supporto dei componenti aggiuntivi completo per supportare componenti aggiuntivi visivi e non visivi da applicazioni autonome e applicazione browser XAML (XBAP).
Ora le applicazioni XBAP possono essere eseguite in Firefox.
I cookie possono essere condivisi tra applicazioni XBAP e applicazioni Web dello stesso sito di origine.
Esperienza IntelliSense XAML migliorata per una maggiore produttività.
Supporto di localizzazione esteso.
Componenti aggiuntivi visivi e non visivi in WPF
Un'applicazione estensibile espone le funzionalità in modo tale da consentire ad altre applicazioni di integrarle ed estenderle. I componenti aggiuntivi rappresentano un metodo comunemente impiegato dalle applicazioni per esporre la propria estensibilità. In .NET Framework, un componente aggiuntivo è in genere un assembly assemblato come libreria di collegamento dinamico (.dll). Il componente aggiuntivo viene caricato in modo dinamico da un'applicazione host in fase di esecuzione, per utilizzare ed estendere i servizi esposti dall'host. L'host e il componente aggiuntivo interagiscono uno con l'altro tramite un contratto noto, in genere un'interfaccia comune pubblicata dall'applicazione host.
Una volta stabilito il supporto dell'applicazione per i componenti aggiuntivi, gli sviluppatori del produttore e di terze parti possono creare i componenti aggiuntivi per l'applicazione. Esistono molti esempi di questi tipi di applicazioni, tra cui Office, Visual Studio e Microsoft Windows Media Player. Ad esempio, il supporto dei componenti aggiuntivi per Microsoft Windows Media Player consente a terze parti di creare decodificatori DVD e codificatori MP3.
.NET Framework implementa i blocchi predefiniti che consentono alle applicazioni di supportare i componenti aggiuntivi. Tuttavia, il tempo e la complessità richiesti per compilare tale supporto possono risultare dispendiosi, considerando che la progettazione di un componente aggiuntivo affidabile deve gestire quanto segue:
Individuazione, ovvero cercare i componenti aggiuntivi conformi ai contratti supportati dalle applicazioni host.
Attivazione, ovvero caricare, eseguire e stabilire la comunicazione con i componenti aggiuntivi.
Isolamento, ovvero utilizzare i processi o domini dell'applicazione per stabilire i limiti di isolamento che proteggono le applicazioni da potenziali problemi di sicurezza e di esecuzione dovuti ai componenti aggiuntivi.
Comunicazione, ovvero consentire ai componenti aggiuntivi di comunicare con le applicazioni host oltre i limiti di isolamento, mediante la chiamata a metodi e il passaggio di dati.
Gestione della durata, ovvero caricare e scaricare processi e domini dell'applicazione in modo netto e prevedibile; vedere in proposito Cenni preliminari sui domini applicazione.
Controllo delle versioni, ovvero accertare che le applicazioni host e i componenti aggiuntivi possano ancora comunicare successivamente alla creazione di nuove versioni.
Anziché richiedere una soluzione a questi problemi, .NET Framework include ora un insieme di tipi situati nello spazio dei nomi System.AddIn e definiti nel complesso "modello di componente aggiuntivo". Il modello di componente aggiuntivo .NET Framework fornisce funzionalità per ognuno dei comportamenti comuni elencati in precedenza.
In alcuni scenari, tuttavia, potrebbe essere necessario consentire ai componenti aggiuntivi di integrare ed estendere le interfacce utente dell'applicazione host. WPF estende il modello di componente aggiuntivo .NET Framework per consentire questo supporto, basato sulla visualizzazione di un oggetto FrameworkElement appartenente a un componente aggiuntivo nelle interfacce utentedi un'applicazione host. In questo modo gli sviluppatori WPF possono creare applicazioni che supportano i seguenti scenari comuni:
Applicazione di tipo Messenger che fornisce servizi aggiuntivi tramite componenti aggiuntivi "buddy" di terze parti.
Applicazioni di gioco progettate per ospitare giochi di terze parti.
Applicazioni di lettura del contenuto che ospitano annunci.
Applicazioni mashup che ospitano moduli arbitrari, ad esempio Windows Sidebar.
Infine, i componenti aggiuntivi WPF possono essere ospitati da applicazioni autonome e da applicazioni XBAP.
Per ulteriori informazioni, vedere Cenni preliminari sui componenti aggiuntivi Windows Presentation Foundation.
Supporto per Firefox per applicazioni XBAP
Un plug-in per WPF 3.5 consente di eseguire le applicazioni XBAP da Firefox 2.0; questa funzionalità non è disponibile per WPF 3.0. Di seguito vengono riportate alcune funzionalità principali:
Se Firefox 2.0 è il browser predefinito, le applicazioni XBAP rispettano la configurazione. Vale a dire, Internet Explorer non viene utilizzato per le applicazioni XBAP se Firefox 2.0 è l'impostazione predefinita.
Le stesse funzionalità di sicurezza disponibili per le applicazioni XBAP eseguite in Internet Explorer sono disponibili per le applicazioni XBAP eseguite in Firefox 2.0, incluso il sandboxing di sicurezza con attendibilità parziale. Le funzionalità di sicurezza aggiuntive fornite da browser sono specifiche del browser stesso.
Cookie
Le applicazioni WPF autonome e le applicazioni XBAP possono creare, ottenere ed eliminare cookie di sessione e cookie permanenti. In WPF 3.5, i cookie permanenti possono essere condivisi tra applicazioni XBAP, server Web e file HTML che abbiano lo stesso sito di origine.
Per ulteriori informazioni sui cookie, vedere Cenni preliminari sull'esplorazione.
Miglioramenti di Visual Studio IntelliSense
Ora è possibile aggiungere un nuovo elemento XAML utilizzando l'editor XAML di Visual Studio, attribuirgli un nome utilizzando l'attributo Name, farvi riferimento dal code-behind e visualizzarne i membri da Esplora risorse IntelliSense.
Localizzazione
WPF 3.5 aggiunge il supporto per i seguenti script:
Bengali
Devanagari
Gujarati
Gurmukhi
Kannada
Malayalam
Oriya
Tamil
Telugu
Per ulteriori informazioni, vedere Globalizzazione per Windows Presentation Foundation.
Supporto IME (Input Method Editor) per TextBox
La classe FrameworkTextComposition possiede ora le seguenti proprietà:
FrameworkTextComposition viene utilizzato come proprietà TextCompositionEventArgs.TextComposition quando l'utente immette il testo in TextBox utilizzando un IME e si verifica l'evento TextInput, TextInputUpdate o TextInputStart.
Grafica
Ora è possibile memorizzare le immagini scaricate tramite HTTP nella cache locale dei file temporanei di Microsoft Internet Explorer, per fare in modo che le successive richieste per l'immagine provengano dal disco locale anziché da Internet. A seconda delle dimensioni delle immagini, ciò può significare un notevole miglioramento delle prestazioni di rete. Per supportare questa funzionalità sono stati aggiunti i seguenti membri:
BitmapDecoder.Create(Uri, BitmapCreateOptions, BitmapCacheOption, RequestCachePolicy)
BitmapFrame.Create(Uri, BitmapCreateOptions, BitmapCacheOption, RequestCachePolicy)
L'evento BitmapSource.DecodeFailed è stato aggiunto per avvisare l'utente nel caso in cui un'immagine non venga caricata a causa di un'intestazione danneggiata.
Grafica tridimensionale
Le nuove funzionalità seguenti sono state aggiunte al modello a oggetti tridimensionali.
Supporto per input, stato attivo ed eventi in 3D
Il modello a oggetti tridimensionali supporta ora concetti UIElement quali input, stato attivo ed eventi. Le nuove classi che forniscono questi servizi sono UIElement3D e le classi derivate ContainerUIElement3D e ModelUIElement3D. Per i relativi esempi, vedere Esempio di classe Sphere di UIElement3D e Esempio di gestione di eventi in 3D.
Contenuto bidimensionale interattivo in 3D
La nuova classe Viewport2DVisual3D fornisce il supporto che consente di collocare un contenuto bidimensionale interattivo in un oggetto tridimensionale. Per un esempio, vedere Esempio di contenuto interattivo 2D su un oggetto 3D.
Nuovi servizi di trasformazione
Le nuove classi GeneralTransform3D, GeneralTransform2DTo3D e GeneralTransform3DTo2D consentono le trasformazioni tra oggetti Visual3D e da oggetti bidimensionali a tridimensionali e viceversa.
Associazione dati
Di seguito vengono riportati i miglioramenti apportati all'associazione dati:
Un nuovo meccanismo di debug semplifica l'esecuzione del debug delle associazioni dati.
Il modello di dati consente la convalida a livello aziendale fornendo un supporto per l'interfaccia IDataErrorInfo. In aggiunta, il modello di convalida supporta ora l'utilizzo della sintassi delle proprietà per impostare le regole di convalida.
Il modello di associazione dati supporta ora LINQ e XLINQ.
Nuovo meccanismo di debug
Ora è più facile eseguire il debug delle associazioni dati. È possibile impostare la nuova proprietà associata PresentationTraceSources.TraceLevel in un oggetto correlato all'associazione per ricevere informazioni sullo stato di una particolare associazione. PresentationTraceSources è una classe statica nello spazio dei nomi System.Diagnostics.
Supporto per IDataErrorInfo
Il modello di convalida dei dati supporta ora l'interfaccia IDataErrorInfo che consente a un oggetto business di determinare la validità dell'input. L'interfaccia definisce un indicizzatore che accetta un nome di proprietà e restituisce una stringa. È stata aggiunta la regola di convalida DataErrorValidationRule, che controlla le eccezioni restituite dall'indicizzatore. Per un esempio, vedere Esempio Business Layer Validation.
Sintassi alternativa per la convalida dei dati
Le classi Binding e MultiBinding hanno due nuove proprietà, ValidatesOnExceptions e ValidatesOnDataErrors. Queste due proprietà offrono un'alternativa all'impostazione di ExceptionValidationRule o DataErrorValidationRule nella sintassi dell'elemento.
Supporto per LINQ e XLINQ
Sono stati apportati miglioramenti a BindingListCollectionView per fornire un migliore supporto per l'associazione a un insieme di tipo BindingList<T> e per LINQ. Anche il comportamento delle associazioni dati con un oggetto CollectionView impostato su IEnumerable è stato migliorato per fornire prestazioni migliori e un migliore supporto per l'associazione ai risultati prodotti da LINQ. Per un esempio di LINQ, vedere Esempio di query LINQ.
In aggiunta, il modello di associazione dati fornisce anche il supporto per XLINQ.
Controlli
RichTextBox
RichTextBox mantiene ora oggetti TextElement personalizzati quando salva TextElement e quando TextElement partecipa alle operazioni relative agli Appunti. Questo comportamento è supportato dalle seguenti nuove API:
La classe TextRange ha un nuovo overload di Save(Stream, String, Boolean) che accetta un valore booleano che specifica se gli oggetti TextElement personalizzati devono essere mantenuti.
La classe TextElementEditingBehaviorAttribute consente di specificare il comportamento di TextElement personalizzato. Quando le proprietà TextElementEditingBehaviorAttribute.IsMergeable e TextElementEditingBehaviorAttribute.IsTypographicOnly vengono impostate su false, un oggetto RichTextBox mantiene i limiti e il contenuto di TextElement personalizzato nel momento in cui l'utente modifica il contenuto di RichTextBox.
RichTextBox ha una nuova proprietà denominata IsDocumentEnabled. Quando IsDocumentEnabled è true, gli elementi dell'interfaccia utente quali ad esempio pulsanti e collegamenti ipertestuali accettano l'input dell'utente.
TextBoxBase
TextBoxBase ha una nuova proprietà denominata UndoLimit che specifica il numero massimo di azioni a cui il controllo fa riferimento.
SoundPlayerAction
Ora SoundPlayerAction può caricare file audio identificabili mediante Uniform Resource Identifier (URI) di tipo pack relativi o assoluti:
File di risorse: file audio con un'azione di compilazione Resource.
File di dati: file audio con un'azione di compilazione Content.
File del sito di origine: file audio con un'azione di compilazione None.
Accessi set protetti
Ora gli accessi set delle seguenti proprietà sono protetti anziché interni:
Documenti
FlowDocumentPageViewer, FlowDocumentScrollViewer e FlowDocumentReader hanno ognuno una nuova proprietà pubblica denominata Selection. La proprietà ottiene TextSelection che rappresenta il contenuto selezionato nel documento.
Annotazioni
Il framework delle annotazioni espone ora le funzionalità per trovare la corrispondenza tra le annotazioni e gli oggetti annotati corrispondenti. È stata aggiunta una nuova interfaccia, IAnchorInfo. Inoltre un nuovo metodo, GetAnchorInfo, il quale restituisce un oggetto IAnchorInfo, è stato aggiunto alla classe AnnotationHelper.
Queste nuove aggiunte consentono scenari in cui è necessario accedere all'oggetto al quale l'oggetto di annotazione è ancorato. Per un esempio, vedere Esempio di un visualizzatore di documenti con annotazioni con il riquadro dei commenti.
Vedere anche
Attività
Esempio di un visualizzatore di documenti con annotazioni con il riquadro dei commenti
Concetti
Architettura di .NET Framework 3.5
Novità di .NET Framework versione 3.5
Cenni preliminari sulla grafica tridimensionale
Cenni preliminari sull'associazione dati
Cenni preliminari sulle annotazioni