Panoramica dell'architettura della versione Windows Presentation Foundation Beta 1

 

Tim Sneath
Microsoft Corporation

Agosto 2005

Si applica a:
   WinFX Runtime Components Beta 1 Release (fare clic per scaricare)

Riepilogo: Questo articolo illustra la versione Beta 1 del Windows Presentation Foundation ("Avalon"), il sottosistema grafico di presentazione Windows di nuova generazione. Fornisce una breve panoramica della piattaforma ed esplora le nuove funzionalità aggiunte in questa versione dalle versioni precedenti. (15 pagine stampate)

Contenuto

Introduzione
Windows Presentation Foundation Beta 1
   Integrazione di Windows
   Nuove funzioni e caratteristiche
   WinFX SDK
Esplorazione delle nuove funzionalità
   Introduzione alle applicazioni "Express"
Introduzione a "Metro"
   File multimediali
   Voce
   Nuovi controlli
   Nuovo supporto codec
   Tipografia
Modifiche alle funzionalità e alle API
   Stili
   Modelli di dati
   Modificabili e freezable
   Rimozione di SqlDataSource
   Modifiche all'API
Conclusione

Microsoft Windows Presentation Foundation (precedentemente noto con il nome di codice "Avalon") offre una piattaforma integrata per la creazione di applicazioni altamente immersive e differenziate visivamente. In questo white paper esaminiamo lo sfondo e il contesto di questa nuova tecnologia, esaminiamo le principali nuove funzionalità fornite nell'intervallo di tempo beta 1 ed evidenziamo alcune delle modifiche più significative che influiranno sulle applicazioni convertite in avanti rispetto alle versioni precedenti.

Introduzione

La chiamata della legge di Moore di crescita esponenziale nella potenza di elaborazione è diventata una metafora distintamente jaded nel settore del calcolo. Tuttavia, l'hardware grafico 3D potente che è ora standard nella maggior parte dei computer moderni è oggi un po 'sottoutilizzato al di fuori del gioco e alcune applicazioni aziendali specializzate. Il Windows Presentation Foundation illustra come sfruttare appieno queste funzionalità come piattaforma per la creazione di esperienze utente avanzate e immersive.

Il Windows Presentation Foundation è un sottosistema di presentazione di nuova generazione che unifica un'intera gamma di servizi di output: interfaccia utente, disegno 2D e 3D, stampa e rendering basati su documenti, riconoscimento vocale e servizi audio e video. Fornendo un singolo framework basato sul codice gestito per tutti questi servizi, l'Windows Presentation Foundation consente di creare nuove esperienze utente avanzate finora difficili o impossibili. Per gli sviluppatori .NET, il framework sarà familiare e in definitiva ridurrà il numero di righe di codice necessarie per compilare applicazioni associate ai dati. Inoltre, il Windows Presentation Foundation introduce servizi nuovi e avanzati, ad esempio l'animazione, mantenendo al tempo stesso l'interoperabilità con il codice esistente scritto per GDI/GDI+.

Uno degli obiettivi prioritari nella creazione della Windows Presentation Foundation è stata l'integrazione. I servizi come l'animazione e il data binding vengono usati esattamente allo stesso modo se la destinazione è grafica 2D o 3D, elementi dell'interfaccia utente come pulsanti e caselle di testo o anche supporti.

Windows Presentation Foundation il rendering delle applicazioni viene eseguito usando un nuovo motore di composizione basato su vettori. L'accelerazione hardware viene usata per il processo di rendering nelle schede grafiche DirectX, con una soluzione software di fallback per hardware di visualizzazione meno recente. Il sistema di coordinate fornisce l'indirizzamento pixel indipendente dalla doppia precisione e risoluzione che consente il supporto per i display ad alta dpi che stanno diventando sempre più diffusi.

Il Windows Presentation Foundation introduce anche un nuovo modello di programmazione dichiarativo denominato "XAML", che consente di specificare le interfacce utente come gerarchia di oggetti con proprietà e logica. XAML separa accuratamente la progettazione dell'interfaccia utente dal codice, consentendo ai progettisti grafici di creare interfacce utente accattivanti e altamente perfezionate e sviluppatori per concentrarsi sulla logica dell'applicazione. Questo modello collaborativo di sviluppo di applicazioni consente agli sviluppatori e ai progettisti di lavorare in modo stretto ed efficiente insieme. Inoltre, XAML è facile per gli strumenti da creare e utilizzare e può essere compilato in un'applicazione insieme a classi scritte in qualsiasi linguaggio conforme a CLS, ad esempio Visual Basic e C#.

Windows Presentation Foundation Beta 1

Integrazione di Windows

Il Windows Presentation Foundation è incluso come parte del sistema operativo Windows Vista. Per la versione Beta 1 di Windows Vista, i componenti di runtime necessari per eseguire le applicazioni Windows Presentation Foundation non sono installati per impostazione predefinita. Un'icona di collegamento sul desktop fornisce un puntatore per l'installazione dal disco di installazione. L'esperienza di installazione per Windows Vista non è finale ed è soggetta a modifiche per le versioni beta future.

Il Windows Presentation Foundation è disponibile anche per l'installazione in Windows XP e Windows Server 2003 tramite i componenti di runtime WinFX, un ridistribuibile che può essere ottenuto da MSDN. L'installazione di questo pacchetto aggiuntivo offre compatibilità con le versioni precedenti per le applicazioni scritte per il Windows Presentation Foundation.

Nuove funzioni e caratteristiche

La versione Beta 1 dei componenti di runtime WinFX è compatibile con la Community Technology Preview rilasciata a maggio (nota come Beta 1 RC). Non ci sono modifiche di rilievo tra le due versioni o le nuove funzionalità; le principali differenze tra le due versioni sono la documentazione aggiuntiva, una serie di correzioni di bug e l'integrazione con Windows Vista.

Le nuove funzionalità principali incluse nella versione Beta 1, rispetto ad altre versioni di anteprima precedenti, sono le seguenti:

  • Applicazioni "Express". Il modello di applicazione Windows Presentation Foundation supporta ora due modalità distinte di esecuzione: eseguibili autonomi e applicazioni "Express". Le applicazioni autonome possono derivare da NavigationApplication o Application, avere accesso a tutti i privilegi concessi al contesto utente corrente e vengono installate nel computer di un utente. Le applicazioni Express devono derivare da NavigationApplication, sono ospitate in una finestra del browser, vengono eseguite in una sandbox parzialmente attendibile vincolata dalla sicurezza e offrono un modello di installazione a footprint zero.
  • Documento "Metro" e infrastruttura di stampa. A WinHEC 2005, Microsoft ha presentato un set di tecnologie denominato "Metro". Al centro è una specifica per un formato di documento aperto e un set di convenzioni che chiunque può usare per archiviare, gestire e firmare digitalmente il contenuto. La specifica definisce anche un formato (denominato Metro Reach nell'SDK) per la carta elettronica, basata su XAML. Il supporto delle tecnologie Metro per le applicazioni include un visualizzatore per visualizzare, gestire e stampare file Metro Reach e un set di API che consentono l'integrazione di tecnologie e documenti metro con applicazioni tradizionali, il Web e l'hardware. Metro viene usato anche in Windows come tecnologia di base per la pipeline della stampante e il formato di spooling.
  • Supporti. In questa versione vengono introdotti nuovi costrutti per abilitare la visualizzazione e la manipolazione di base degli elementi multimediali audio e video. Con il Windows Presentation Foundation è possibile riprodurre più video contemporaneamente, sovrapporre un video sopra un altro e anche aggiungere geometrie o fusione alfa per modificare il modo in cui viene visualizzato un video.
  • Voce. Il riconoscimento vocale e la sintesi vocale sono ora inclusi come parte del Windows Presentation Foundation. È possibile usare queste classi per migliorare l'accessibilità delle applicazioni, personalizzarle ulteriormente per migliorare la gestione del gergo specifico del dominio e persino per generare audio pregenerato e generato dinamicamente per creare una soluzione più sofisticata.
  • Altre funzionalità. Sono ora inclusi un controllo expander e un controllo barra di stato, come parte di un focus sull'aumento dell'intervallo e dell'ampiezza dei controlli forniti con il Windows Presentation Foundation. Le funzionalità tipografiche nella Windows Presentation Foundation vengono estese per includere ora il supporto per i tipi di carattere Adobe CFF. Alcune aree del modello a oggetti visualizzano miglioramenti delle prestazioni, con ulteriori operazioni pianificate per le versioni future.

WinFX SDK

La distribuzione di questa versione include una versione iniziale di WinFX SDK, che include documentazione, strumenti ed esempi per la creazione di applicazioni gestite Windows Presentation Foundation, oltre al supporto per la creazione di servizi basati su Windows Communication Foundation (in precedenza noto come "Indaco"). Poiché si tratta di una versione pre-beta provvisoria, si prevede che la documentazione sia parzialmente incompleta e che alcuni esempi vengano interrotti. Controllare le note sulla versione per individuare i problemi noti in caso di problemi.

L'SDK include anche il supporto degli strumenti di Visual Studio 2005 per lo sviluppo con i Windows Presentation Foundation e Windows Communication Foundation, inclusi i modelli aggiornati per la compilazione di applicazioni in esecuzione sia all'interno che all'esterno del browser, nonché per i controlli Windows Presentation Foundation. IntelliSense viene fornito sia per il codice che per il markup e il supporto per la compilazione e il debug è abilitato insieme alla Guida integrata. Anche in questo caso, le note sulla versione forniscono informazioni sui componenti necessari e sull'ordine di installazione corretto per assicurarsi che tutto venga configurato correttamente.

Questa versione include anche i componenti di runtime WinFX, inclusi i runtime di .NET Framework 2.0 Beta 2 e i runtime di Windows Presentation Foundation e Windows Communication Foundation. È possibile usare il runtime per la distribuzione interna di un'applicazione in fase di sviluppo; tenere presente che l'esperienza di configurazione dell'utente finale non è finale.

Esplorazione delle nuove funzionalità

Questa sezione illustra in modo più dettagliato le nuove funzionalità introdotte dal CTP di marzo 2005. Questo documento fornisce esempi di come usare le nuove funzionalità presenti nella beta 1, insieme ai collegamenti alle parti pertinenti della documentazione di WinFX SDK.

Introduzione alle applicazioni "Express"

Una delle principali sfide odierne con la creazione di applicazioni client è costituita dai problemi di infrastruttura della distribuzione e della gestione delle applicazioni. Negli scenari aziendali e consumer, gli sviluppatori di applicazioni cercano una piattaforma che semplifica la distribuzione di applicazioni sul desktop e l'aggiornamento senza problemi. L'assorbimento delle applicazioni basate sul Web è stato in gran parte dovuto a questi vantaggi, ma le persone sono sempre più alla ricerca di applicazioni che sfruttano maggiormente la velocità e l'interattività del PC locale. Ad esempio, le applicazioni AJAX hanno attirato l'attenzione ultimamente, ma la difficoltà di compilazione e debug di tali applicazioni lascia che gli sviluppatori continuino a cercare una soluzione migliore.

Immettere l'applicazione "Express", un modello basato su ClickOnce (introdotto con Visual Studio 2005) e fornisce un modello di sicurezza sicuro per le applicazioni distribuite in una cache locale che offre gran parte della potenza della Windows Presentation Foundation combinata con un percorso leggero per la manutenzione e l'aggiornamento di un'applicazione.

Le applicazioni Express vengono eseguite in una sandbox con vincoli di sicurezza e sono ospitate nel browser, in esecuzione nell'area Internet. Distribuiscono automaticamente in un computer senza un prompt di sicurezza interattivo e vengono memorizzati nella cache locale. In contrasto con le normali applicazioni attendibili che in genere hanno accesso completo al computer, vengono eseguite all'esterno di una finestra del browser e vengono installate in una directory \Programmi anziché essere memorizzate nella cache.

I progettisti di applicazioni devono selezionare il modello ottimale per le proprie esigenze in base alla profondità dell'integrazione con la piattaforma sottostante. Le applicazioni che devono sfruttare appieno il sistema client, ad esempio archiviazione di grandi dimensioni, presenza di menu Start, funzionalità offline e così via devono essere applicazioni con attendibilità totale. Un'applicazione in cui è desiderata un'esperienza più simile al Web può essere un buon candidato per il modello di applicazione Express (ad esempio visualizzazioni, app basate sui dati e interattività in cui provengono i dati dal server). Il diagramma di flusso seguente evidenzia le scelte principali del modello:

Aa480177.hgtomayavalonctp1(en-us,MSDN.10).gif

Figura 1. Selezione di un modello di applicazione

Il modo più semplice per creare un'applicazione Express consiste nell'usare il modello di applicazione Express predefinito da Visual Studio. Verrà creato un progetto basato sull'oggetto NavigationApplication . Questo modello include diverse impostazioni di progetto note nel file con estensione csproj o vbproject che impostano l'applicazione da eseguire nell'area Internet, non vengono installate, eseguite all'interno di un browser e selezionano l'estensione xapp manifesto dell'applicazione. Altri dettagli sono disponibili nella documentazione sotto l'argomento "A Sample Project File for XAML-based Avalon Express Applications".

Lo sviluppo di un'applicazione Express è simile allo sviluppo di qualsiasi altra applicazione, ad eccezione del fatto che alcune funzionalità non sono disponibili in questo ambiente. Ad esempio, non è possibile visualizzare una finestra autonoma, non è possibile usare i servizi creati per usare Windows Communication Foundation ("Indaco") (anche se è possibile usare il modello client ASMX esistente) e è possibile scrivere solo in un'area privata limitata dalla quota del file system. Tenere presente che la sandbox Express nella versione beta 1 corrente non è completa. Alcuni nuovi scenari di applicazione verranno abilitati per l'uso con il Windows Presentation Foundation entro la 1.0, inclusa la possibilità di creare un documento di flusso.

Quando si compila un'applicazione Express, viene creato un file manifesto con estensione xapp, che può essere eseguito direttamente dal computer locale semplicemente facendo doppio clic su di esso. Più probabilmente, tuttavia, si distribuirà questo file in un server Web insieme all'eseguibile dell'applicazione, al manifesto, alle DLL dipendenti e, facoltativamente, ai simboli di debug (file con estensione pdb). Infine, è necessario tenere presente che se si prevede di distribuire un'applicazione Express in un computer Windows Server 2003, è necessario aggiungere manualmente alcuni tipi MIME e gestori di estensione alla configurazione predefinita (sicura) per consentire la distribuzione corretta delle applicazioni Express. I dettagli sono disponibili nella documentazione nell'argomento "Configurare IIS per distribuire applicazioni Avalon".

Introduzione a "Metro"

Fare clic qui per un'immagine più grande Fare clic qui

Fare clic qui per un'immagine più grande Fare clic qui

Figura 2a e 2b. Installazione ed esecuzione di un'applicazione Avalon Express (fare clic per un'immagine più grande)

Documenti con "Metro"

Alla conferenza WinHEC 2005 per i fornitori di hardware indipendenti, Microsoft ha annunciato un nuovo impegno per la creazione di applicazioni integrate del ciclo di vita dei documenti. "Metro" è una serie di tecnologie destinate a rivoluzionare il ciclo di vita del flusso di lavoro del documento da schermo a stampante. Metro fornisce un'infrastruttura comune per unificare i componenti del ciclo di vita dei documenti e per trasportare il contenuto nell'organizzazione.

Metro è costituito da:

  • Un formato di documento aperto, che ha due parti: 1) un contenitore basato sul formato CAB ZIP, che offre un modo coerente per archiviare sia il contenuto che il rights management e i metadati della firma digitale relativi a tale contenuto; e 2) una definizione di carta elettronica nota come pacchetto Metro Reach, basato su XML.
  • Un set di API per sviluppatori integrate con il Windows Presentation Foundation per consentire l'integrazione senza problemi di scenari di documento in applicazioni Web e tradizionali.
  • Un visualizzatore di documenti avanzato per visualizzare, gestire e stampare i file Metro Reach. Il visualizzatore viene implementato come plug-in del browser per Internet Explorer.
  • Nuova pipeline di stampa che integra direttamente Metro come formato di spooling e un nuovo linguaggio di descrizione della pagina della stampante che consente una migliore qualità e prestazioni di stampa.

Il contenitore Metro è un meccanismo per i file di dati di qualsiasi applicazione da gestire, condividere e convalidare in modo comune. Metro offre un set di convenzioni che gli ISV possono usare per la creazione di pacchetti di contenuto e l'applicazione di rights management, firme digitali e metadati in file di dati diversi.

Il pacchetto Metro Reach descrive in modo univoco l'aspetto di un documento e descrive come devono essere incluse tutte le risorse del documento in modo che possano essere usate in qualsiasi piattaforma. Metro Reach è facile da creare, modificare ed eseguire il rendering perché usa tecnologie openly disponibili. In particolare, usa XML per descrivere come eseguire il rendering di un documento, specifica le risorse che usano tipi di carattere e immagini disponibili apertamente e descrive come deve essere inserita in un pacchetto con ZIP.

Dal punto di vista dello sviluppatore, Metro e le Windows Presentation Foundation sono tecnologie complementari. Metro è un subset del nuovo modello di visualizzazione Windows Presentation Foundation e, pertanto, i documenti Metro Reach sono un modo ideale per visualizzare il contenuto dalle applicazioni basate su WinFX. È possibile usare documenti Metro Reach da applicazioni WinFX gestite e anche da applicazioni Win32 non gestite.

Infine, la pipeline di stampa Metro migliorerà la qualità dell'output di cui è stato eseguito il rendering tramite stampanti. Gli ISV incentrati sulla grafica aggiungono effetti grafici avanzati, ad esempio ombre morbide, evidenziazioni speculari, sfumature e trasparenze per modernizzare l'aspetto e l'output. Il supporto nativo per alcuni di questi requisiti in Windows è attualmente limitato e questo spesso comporta una disparità tra output visualizzato e stampato. Il Windows Presentation Foundation restituirà i dati come documenti Metro Reach in modo nativo che possono essere interpretati direttamente dallo spooler di Windows Vista, offrendo una fedeltà molto elevata da schermo a stampa per i requisiti grafici più complessi.

Metro sarà incluso in Windows Vista insieme al resto del Windows Presentation Foundation. Visita il sito della metropolitana WHDC per la specifica metro corrente. Metro sarà trattato in dettaglio da una prospettiva di sviluppo software a PDC 2005 a Los Angeles questo settembre.

File multimediali

Il Windows Presentation Foundation include il supporto per audio e video come elementi integrati all'interno di un layout. Per questa versione Beta 1 è stato abilitato un set di funzionalità che consente agli sviluppatori di includere contenuti multimediali nelle applicazioni per una riproduzione semplice e monouso. Queste funzionalità includono:

  • Video composito
  • Riproduzione audio/video per . WMV e . File WMA
  • Classe MediaElement
    • che è possibile usare dal codice e dal markup
    • che è possibile usare in un pannello o in un controllo
    • a cui è possibile applicare le proprietà Clip, Opacity, Transforms e Stretch
    • che puoi usare in un'animazione
  • Classi MediaTimeline e MediaClock , con controllo limitato (riproduzione/pausa/arresto) del video
  • Supporto multivideo limitato

Tra il momento e la versione Beta 2 sarà disponibile un ulteriore lavoro sui media per aggiungere il supporto per requisiti più complessi e una migliore lucidatura. Un esempio delle limitazioni in questa versione è che non è possibile eseguire automaticamente il ciclo di un elemento multimediale quando raggiunge la fine o per riavvolgere o inoltrare tramite il supporto.

Come esempio di ciò che è possibile fare semplicemente con i supporti nel Windows Presentation Foundation, vedere lo screenshot seguente. Si noti il modo in cui il video più alto è composto con la fusione alfa nello screenshot sottostante; si noti anche che viene ritagliato in una geometria ellittica.

Fare clic qui per un'immagine più grande Fare clic qui

Figura 3. supporto per i supporti di Windows Presentation Foundation (fare clic per un'immagine più grande)

Questa operazione è stata creata con solo il codice visualizzato di seguito:

<Grid xmlns="https://schemas.microsoft.com/winfx/avalon/2005" >
   <MediaElement Name="myVideo" Source="\media\The_Magic_of_Flight_720.wmv"
                 Stretch="Fill" />
   <MediaElement Name="myVideo" Source="\media\Start Something.wmv" 
                 Width="480" Height="320" Opacity="0.7">
      <MediaElement.Clip>
         <EllipseGeometry Center="200, 100" RadiusX="150" RadiusY="100" />
      </MediaElement.Clip>

   </MediaElement>

   <TextBlock FontFamily="Global User Interface" FontSize="84pt" 
              Foreground="#ffff00" 
              TextAlignment="center" VerticalAlignment="bottom" 
              RenderTransform="rotate -5" Opacity=".35">
      Windows Presentation Foundation Media Support
   </TextBlock>

</Grid>

Usando l'API Visiva di livello inferiore, è possibile usare video come oggetto Drawing grazie alla classe VideoDrawing .

Si noti che il video non è operativo in Windows Vista Beta 1, ma verrà abilitato in una versione futura.

Voce

Lo spazio dei nomi System.Speech consente di incorporare sia il riconoscimento vocale che la sintesi vocale in un'applicazione. Il riconoscimento vocale può essere usato per consentire l'uso di comandi vocali per gestire l'applicazione Windows Presentation Foundation. La sintesi vocale consente a un'applicazione Windows Presentation Foundation di "leggere" del testo tramite il sottosistema audio.

Riconoscimento vocale

Le classi principali che supportano il riconoscimento vocale sono:

  • DesktopRecognizer: astrae il riconoscitore condiviso dalle app sul desktop
  • SpeechRecognizer: astrae un motore di riconoscimento per l'uso esclusivo da parte dell'app
  • RecognitionResult: esaminare il testo e la semantica restituiti da un riconoscitore
  • SrgsDocument: usato per creare grammatiche di riconoscimento (le regole per le frasi che un riconoscitore deve ascoltare nell'app)

Ad esempio, per caricare una grammatica contenente i comandi dell'app nel sistema di riconoscimento desktop condiviso:

DesktopRecognizer desktopRecognizer = new DesktopRecognizer();
desktopRecognizer.LoadGrammar(new Grammar(new Uri(grammarPath)));
desktopRecognizer.SpeechRecognized += delegate(object sender, RecognitionEventArgs e)
    {
        // Do appropriate handling when we get a recognition
        // Console.WriteLine("User said {0}", e.Result.Text);
    };

Per usare i servizi di riconoscimento vocale del Windows Presentation Foundation, è necessario avere installato anche un motore di riconoscimento vocale, ma tenere presente che non viene distribuito con il sistema operativo a livello di base, ad eccezione di Windows XP Tablet PC Edition. Le versioni più recenti di Microsoft Office includono anche il motore di riconoscimento vocale ed è sempre possibile scaricare un motore dal sito Web dell'API Riconoscimento vocale Microsoft nel percorso seguente: https://www.microsoft.com/speech/download/sdk51/. Infine, tenere presente che i motori di riconoscimento vocale sono specifici della lingua e non sono disponibili per tutte le lingue di Windows supportate.

Sintesi vocale

Le classi principali per la sintesi vocale sono:

  • SpeechSynthesizer: astrae un motore di sintesi
  • PromptBuilder: creare una stringa di richiesta contenente enfasi, voce, suoni preregistrati e altre caratteristiche.

Ad esempio, se si vuole che l'app dica "hello world", è sufficiente scrivere:

SpeechSynthesizer synth = new SpeechSynthesizer();
synth.Speak("Hello world!");

È possibile combinare facilmente questo file con un file wave usando PromptBuilder, ad esempio:

PromptBuilder builder = new PromptBuilder();
builder.AddAudio (new Uri (@"file://\windows\media\ding.wav"));
builder.AddText("Hello world!");

SpeechSynthesizer synth = new SpeechSynthesizer();
synth.Speak(builder);

A differenza del riconoscimento vocale, tutte le versioni di Windows compatibili con i componenti WinFX Runtime (Windows XP, Windows Server 2003 e Windows Vista) includono un motore di sintesi vocale.

In conclusione, si noti che i servizi vocali descritti qui usano i formati standard W3C per le grammatiche di riconoscimento (SRGS) e la sintesi (SSML).

Nuovi controlli

Expander è un nuovo controllo che è possibile usare ovunque si disponga di alcuni dati che si desidera poter comprimere ed espandere su richiesta. Per impostazione predefinita, l'esperienza utente simula gli elenchi di attività presenti sul lato sinistro di una finestra di Esplora risorse in Windows XP, ma è possibile eseguirlo per quasi tutti gli scopi in cui si desidera nascondere e quindi visualizzare il contenuto.

Aa480177.hgtomayavalonctp4(en-us,MSDN.10).gif

Figura 4. Controllo Expander

Per usare il controllo Expander, è sufficiente creare un'area Expander.Header per l'area del titolo e quindi aggiungere un contenuto all'interno del corpo del espansore (è possibile usare facoltativamente un oggetto ScrollViewer per impedire la crescita troppo grande dell'area espansa), come indicato di seguito:

<StackPanel xmlns="https://schemas.microsoft.com/winfx/avalon/2005"
            xmlns:x="https://schemas.microsoft.com/winfx/xaml/2005" >
   <StackPanel.Resources>
      <XmlDataSource x:Key="BookData" XPath="/Books">
         <Books >
            <Book ISBN="0-2010-3812-9" Stock="in">
               <Title>Surreal Numbers</Title>
            </Book>
            <Book ISBN="1-5758-6327-8" Stock="in">
               <Title>Things a Computer Scientist Rarely Talks About</Title>
            </Book>
            <Book ISBN="0-4650-6710-7" Stock="in">
               <Title>The Design of Everyday Things</Title>
            </Book>
            <Book ISBN="0-0609-2656-2" Stock="out">
               <Title>The Lost Heart of Asia</Title>
            </Book>
         </Books>
      </XmlDataSource>
      <Style TargetType="{x:Type ListBox}">
         <Setter Property="BorderBrush" Value="Transparent" />
      </Style>
      <Style TargetType="{x:Type ListBoxItem}">
         <Setter Property="Margin" Value="1" />
         <Setter Property="Cursor" Value="Hand" />
      </Style>
   </StackPanel.Resources>
   <Expander Margin="0,0,0,10" DockPanel.Dock="Top" Background="Transparent">
      <Expander.Header>
         <TextBlock Margin="10,0,0,0" FontFamily="Tahoma" FontWeight="Bold">
            Books
         </TextBlock>
      </Expander.Header>
      <ScrollViewer VerticalScrollBarVisibility="Auto"
                    HorizontalScrollBarVisibility="Disabled">
         <ListBox FontFamily="Tahoma" 
                  DataContext="{Binding Source={StaticResource BookData},
                                XPath=/Books/Book/Title}"
                  ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True"  />
      </ScrollViewer>
   </Expander>
</StackPanel>

Il controllo StatusBar fornisce informazioni di stato arbitrarie in una serie di pannelli ed è in genere ancorato alla parte inferiore di una finestra. È un controllo abbastanza semplice da usare: è sufficiente creare un Oggetto StatusBarItem all'interno dell'insieme StatusBar.Items per ogni singola parte della barra di stato. StatusBarItems può contenere altri elementi complessi, ad esempio stackPanel, come indicato di seguito:

<Window xmlns="https://schemas.microsoft.com/winfx/avalon/2005">
   <DockPanel>

      <StatusBar DockPanel.Dock="Bottom">
         <StatusBar.Items>
            <StatusBarItem>
               <TextBlock Name="Info">
               Welcome to the new features of 
                              <Bold>Windows Presentation Foundation</Bold>!
               </TextBlock>
            </StatusBarItem>
            <StatusBarItem Name="WordButtons">
               <StackPanel Orientation="Horizontal" Margin="20 0 0 0">
                  <Button Name="REC">REC</Button>
                  <Button Name="TRK">TRK</Button>
                  <Button Name="EXT">EXT</Button>
                  <Button Name="OVR">OVR</Button>
               </StackPanel>
            </StatusBarItem>
            <StatusBarItem Name="General" HorizontalAlignment="Right">
This item is right-aligned.
</StatusBarItem>
         </StatusBar.Items>
      </StatusBar>
      <Label />
   </DockPanel>
</Window>

Si noti anche che il controllo Barra degli strumenti è stato esteso per supportare l'overflow (allo stesso modo di Office 2003), con espansori usati per abilitare la selezione di un pulsante della barra degli strumenti overflow. Sono stati aggiunti diversi miglioramenti al sistema di menu e il supporto è stato aggiunto a Windows Presentation Foundation per le versioni silver e olive del tema predefinito di Windows XP.

Nuovo supporto per codec

Usando Windows Presentation Foundation, le immagini possono essere facilmente integrate con grafica, supporti, testo e interfaccia utente dell'applicazione. Le applicazioni basate sul Windows Presentation Foundation potranno anche riconoscere, visualizzare, modificare e salvare immagini in formati di immagini nuove o proprietarie senza dover ricompilare o ridistribuire l'applicazione. Purché un'applicazione usi le API di creazione di immagini Windows Presentation Foundation, la piattaforma codec sottostante individua automaticamente e richiama automaticamente il codec appropriato per qualsiasi formato di immagine per cui è stato installato il supporto in fase di esecuzione.

Sono state aggiunte diverse aggiunte di funzionalità e una buona quantità di documentazione aggiuntiva alla sezione codec di immagine. Le funzionalità correnti della piattaforma di base includono codec predefiniti per formati comuni, ad esempio JPEG, PNG, TIFF e GIF. La piattaforma fornisce anche lettori e writer di metadati ,in modo che, ad esempio, è possibile modificare i metadati EXIF contenuti in un file JPEG e ricompilare la versione aggiornata. Avalon offre anche convertitori di formato pixel tra formati grafici diversi e una pipeline estendibile per ognuna di queste tre aree, consentendo di creare convertitori personalizzati, lettori di metadati o codec.

Nelle versioni post-Beta 1, Windows Presentation Foundation aggiungerà anche il supporto per una pipeline di effetti immagine estendibile, consentendo agli sviluppatori di applicazioni di aggiungere dinamicamente effetti come sfocatura o ombreggiatura a un'immagine grafica. Anche in questo caso, questo modello sarà estendibile per consentire l'inserimento di effetti di immagine personalizzati.

Tipografia

Una nuova funzionalità aggiunta nell'area della tipografia con questa versione è il supporto di Adobe CFF. Questa estensione a OpenType consente di supportare tipi di carattere più ornati e complessi e consente ai progettisti grafici di accedere all'intera gamma di legature discrezionali e contestuali presenti in un carattere tipizzato. L'esempio grafico seguente mostra le funzionalità del supporto del testo nel Windows Presentation Foundation. Questo carattere di tipo è Adobe Bickham Script Pro e tramite l'uso di legature discrezionali e contestuali e glifi varianti stilistiche forniti all'interno dei file di carattere, è possibile ottenere effetti impressionante che sono difficili da ottenere in Windows oggi.

Aa480177.hgtomayavalonctp5(en-us,MSDN.10).gif

Figura 5. Uso del supporto di Adobe CFF dall'interno di Windows Presentation Foundation

Modifiche alle funzionalità e alle API

Per enumerare ogni modifica api in questa versione non rientra nell'ambito di questo documento; Tuttavia, in questa sezione viene fornita una breve guida alle modifiche concettuali e sintassi principali che influiscono sugli sviluppatori che tentano di convertire il codice dalla versione CTP di marzo precedente ai bit beta 1.

Stili

Il modello di stile in Avalon è stato refactorato in questa versione. Gli stili non contengono più istanze dei controlli all'interno di essi, ma invece includono i setter di proprietà e i getters. Il nuovo formato è leggermente più dettagliato, ma offre una maggiore flessibilità.

L'esempio seguente illustra la nuova sintassi per impostare uno stile:

   <Page.Resources>
      <Style TargetType="{x:Type Paragraph}">
         <Setter Property="FontFamily" Value="Palatino Linotype" />
         <Setter Property="FontSize" Value="16pt" />
         <Setter Property="Margin" Value=".25in" />
      </Style>
   </Page.Resources>

Modelli di dati

Nelle versioni precedenti Windows Presentation Foundation distinto tra l'albero degli elementi logici e un albero visivo, che controllava la rappresentazione di un albero logico. Gli alberi visivi sono stati incorporati come parte degli stili. Ora gli stili e gli alberi visivi sono stati separati come concetti; è invece possibile incorporare un modello all'interno del controllo padre o come parte di un dizionario di risorse.

L'esempio seguente mostra la nuova e vecchia sintassi affiancata:

Old (sintassi CTP marzo) Nuovo (sintassi Beta 1)
<Page.Resources>
   <Style x:Key="MessageTemplate">
      <Style.VisualTree>
         <StackPanel>
            <TextBlock 
          TextContent="{Bind 
Path=From}" />
            <TextBlock
          TextContent="{Bind 
Path=Body}" />
         </StackPanel>
      </Style.VisualTree>
   </Style>
</Page.Resources>
...
<ListBox 
ItemsSource="{StaticResource 
MessageData}" 
ItemStyle="{StaticResource 
MessageTemplate}" />
<ListBox 
ItemsSource="{StaticResource 
MessageData}">
   <ListBox.ItemTemplate>
      <DataTemplate>
         <StackPanel>
            <TextBlock 
          TextContent="{Binding 
Path=From}" />
            <TextBlock 
          TextContent="{Binding 
Path=Body}" />
         </StackPanel>
      </DataTemplate>
   </ListBox.ItemTemplate>
</ListBox>

Modificabili e Freezables

Nelle versioni precedenti della Windows Presentation Foundation molti tipi comuni derivati da una classe di base denominata Changeable. Il modello modificabile è stato introdotto per consentire l'uso di tipi non modificabili come se fossero modificabili, con la classe di base che esegue il lavoro dietro le quinte per creare cloni di oggetti in base alle esigenze. Ad esempio, le applicazioni possono creare un oggetto pennello, impostare il colore su rosso e usarlo; poiché hanno apportato modifiche all'oggetto, è stato clonato solo sull'utilizzo di tale oggetto. Avere valori non modificabili è una parte importante della creazione di un sistema ad alte prestazioni: il lavoro di conservazione delle librerie richiesto per gli oggetti modificabili impone un carico inaccettabile, ma la creazione di copie modificabili è importante anche per la manipolazione e l'animazione a livello di codice. Il modello modificabile fornisce un modello che supporta entrambi i requisiti.

In questa versione sono stati apportati diversi miglioramenti a questo modello per renderlo più comprensibile, ridurre il numero di copie impreviste eseguite e creare un modello formalizzato per le raccolte modificabili. All'interno del nuovo modello Freezable ci sono solo due stati: Frozen e Unfrozen. Quando si crea un oggetto, è unfrozen per impostazione predefinita. È possibile modificare l'oggetto, ad esempio impostando il colore del pennello e quindi bloccandolo. Una volta bloccato l'oggetto, è bloccato per buona, anche se è possibile creare un nuovo clone profondo di unfrozen usando il metodo Copy(). La grande semplificazione all'interno di questo modello è che un'applicazione stessa si occupa del blocco di un oggetto, piuttosto che di questo accade sull'utilizzo.

Rimozione di SqlDataSource

SqlDataSource è stato progettato per connettersi a un database di SQL Server o altro provider di dati .NET e per tutti gli scopi pratici è stato limitato agli scenari di rete aziendali. La complessità e la gamma di opzioni di configurazione necessarie per fornire supporto completo alle esigenze dei clienti significa che è stato adottato un approccio alternativo. Il motore di data binding in Windows Presentation Foundation è ancora completamente in grado di associare i dati da qualsiasi origine ADO.NET; tuttavia, il metodo puramente dichiarativo di recupero dei dati è stato deprecato.

Senza l'elemento XAML SqlDataSource, creare oggetti del set di dati e del comando ADO.NET nel file code-behind per popolare un oggetto DataSet e assegnare DataSet o DataTable alla proprietà DataContext di un elemento dell'interfaccia utente. Ad esempio, per caricare un file Access (.mdb), il codice tipico potrebbe essere simile al seguente:

    string mdbFile = Path.Combine(AppDataPath, "db1.mdb");
    string connString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}", mdbFile);
 
    OleDbConnection conn = new OleDbConnection(connString);
    OleDbDataAdapter adapter = new OleDbDataAdapter();
    adapter.SelectCommand = new OleDbCommand("SELECT * FROM ExecsTable;", conn);
    DataSet ds = new DataSet();
    adapter.Fill(ds, "ExecsTable");
 
    // assign data set to a panel's DataContext:
    myPanel.DataContext = ds;

Modifiche all'API

Esistono diverse modifiche api in cui sono stati rinominati gli oggetti; l'elenco completo è oltre questo articolo, ma vale la pena evidenziare due piccole modifiche ma significative che influiscono quasi ogni applicazione. Prima di tutto, la proprietà FrameworkElement.ID usata in precedenza per identificare un oggetto è stata rinominata in Name per coerenza con Windows Forms e conformità con FxCop. In secondo luogo, la sintassi del data binding è stata modificata in modo che {Bind} sia ora {Binding}. Per altre informazioni sulle modifiche alla sintassi, consultare la documentazione.

Conclusione

Windows Presentation Foundation continua la sua traiettoria verso la produzione e le versioni basate su Beta 1 offrono una buona opportunità per le aziende che cercano di esplorare una visualizzazione avanzata dei dati, esperienze Web immersive o altre applicazioni multimediali avanzate per valutare scenari di utilizzo e creare prototipi di lavoro di applicazioni basate su Windows Presentation Foundation.

Sul Web sono disponibili numerose risorse utili per altre informazioni su Windows Presentation Foundation:

 

Informazioni sull'autore

Tim Sneath lavora come Client Windows Technical Evangelist presso Microsoft. Per qualcuno con interesse per le tecnologie non rilasciate, è un po 'ironico che mantiene anche un museo completo di immagini di PC virtuali che coprono Windows 1.0 al giorno attuale. Fino a poco tempo Fa Tim ha vissuto e lavorato nel Regno Unito, e sta ancora cercando di combattere la necessità di fermare il lavoro alle 3:00 per tè e scones pomeriggio, così come un presumibilmente impenetrable accento. Il suo blog è disponibile all'indirizzo https://blogs.msdn.com/tims.