Windows Presentation Foundation: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Botcrux (discussione | contributi)
m Collegamenti esterni: Bot: elenco puntato, come da manuale
 
(41 versioni intermedie di 33 utenti non mostrate)
Riga 1:
{{F|Microsoft|febbraio 2022}}
 
'''Windows Presentation Foundation''' (o '''WPF'''), nome in codice ''Avalon'', è una libreria di classi del [[Framework .NET]] proprietarie [[Microsoft]] (introdotta con la versione 3.0) per lo sviluppo dell'interfaccia grafica delle applicazioni in ambienti [[Windows]].
 
L'innovazione principale di WPF è la rimozione di ogni legame con il modello di sviluppo tradizionale di Windows, introdotto con la versione 1.0 del sistema operativo. Tutti i controlli sono stati riscritti (non si appoggiano più a quelli della libreria “user”) e lo stessoil meccanismo basato su scambio di messaggi, cuore del modello di programmazione di Windows, èviene incapsulato in code di eventi, semplificandolo e nascondendone statola abbandonatocomplessità.
 
WPF è basato su un sistema di [[grafica vettoriale]] che si appoggia alle [[DirectX]] per sfruttare l'accelerazione [[hardware]] delle moderne schede grafiche. WPF può essere impiegato per realizzare applicativi eseguibili, anche all'interno del browser [[Microsoft Internet Explorer]] o di altri browser avanzati, purché sia presente il Framework. Il linguaggio usato per la creazione di una interfaccia utente in WPF è l'lo [[XAML]] (eXtensible Application Markup Language), basato su [[XML]].
 
Il 4 dicembre 2018, durante la conferenza Microsoft Connect(); 2018, l'azienda ha reso open source Windows Presentation Foundation, [[Windows Forms]] e WinUI (Windows UI XAML Library), caricando su GitHub il codice sorgente<ref>{{Cita web|url=https://www.hwupgrade.it/news/sistemi-operativi/microsoft-rende-windows-forms-winui-e-wpf-open-source_79525.html|titolo=Microsoft rende Windows Forms, WinUI e WPF open source|sito=Hardware Upgrade|lingua=it-IT|accesso=2018-12-05}}</ref>.
[[Categoria:Microsoft Windows]]
[[Categoria:Interfacce grafiche]]
[[Categoria: Librerie software]]
 
==Architettura==
[[de:Windows Presentation Foundation]]
[[Immagine:WPF_Architettura.png|300x350px|thumbnail|right|WPF Architettura]]
[[en:Windows Presentation Foundation]]
L'architettura di Windows Presentation Foundation si basa sia su codice gestito sia su codice nativo. Comunque, le API pubbliche esposte sono disponibili soltanto come codice gestito.
[[fi:Windows Presentation Foundation]]
Mentre la maggior parte di WPF è in codice gestito, il motore di composizione che renderizza le applicazioni WPF è un componente nativo. Il suo nome è Media Integration Layer (MIL) e risiede in ''"milcore.dll"''. Esso si interfaccia direttamente con DirectX e provvede il supporto di base per le superfici 2D e 3D, effettua la manipolazione controllata nel tempo dei contenuti di una superficie con una vista per esporre animazioni costruite ad alto livello, esegue la composizione degli elementi individuali di una applicazione WPF nella scena finale 3D che rappresenta la UI dell'applicazione e quindi si incarica di renderizzarla sullo schermo. I media codec sono anche implementati come codice non gestito, e sono forniti da ''"windowscodecs.dll"''. Nella parte di codice gestito abbiamo il PresentationCore (''"presentationcore.dll"'') che fornisce un wrapper per MIL e implementa il cuore dei servizi per WPF e il PresentationFramework (''"presentationframework.dll"'') che implementa le novità incluse layouts, time-dependent, story-board based animations e data binding.
[[fr:Windows Presentation Foundation]]
 
[[ja:Windows Presentation Foundation]]
<!--
[[ko:윈도 프레젠테이션 파운데이션]]
includendo un gestore delle proprietà che è consapevole delle dipendenze che esistono tra chi produce e chi consuma determinate proprietà, un sistema di dispatching per mezzo di un oggetto Dispatcher per implementare un sistema ad eventi specializzato e servizi i quali possono implementare un sistema di impaginazione legato alla dimensione degli elementi della UI. PresentationFramework (''"presentationframework.dll"'') implementa le novità incluse layouts, time-dependent, story-board based animations, and data binding.
[[nl:Windows Presentation Foundation]]
 
[[pl:Windows Presentation Foundation]]
WPF exposes a property system for objects which inherit from DependencyObject, that is aware of the dependencies between the consumers of the property, and can trigger actions based on changes in properties. Properties can be either hard coded values or expressions, which are specific expressions that evaluate to a result. In the initial release, however, the set of expressions supported is closed.[6] The value of the properties can be inherited from parent objects as well. WPF properties support change notifications, which invoke bound behaviors whenever some property of some element is changed. Custom behaviors can be used to propagate a property change notification across a set of WPF objects. This is used by the layout system to trigger a recalculation of the layout on property-changes, thus exposing a declarative programming style for WPF, whereby almost everything, from setting colors and positions to animating elements can be achieved by setting properties.[6] This allows WPF applications to be written in XAML, which is a declarative mark-up language, by binding the keywords and attributes directly to WPF classes and properties.
[[ru:Windows Presentation Foundation]]
 
[[tr:Windows Presentation Foundation]]
The UI elements of a WPF application are maintained as a class of Visual objects. Visual objects provide a managed interface to a composition tree which is maintained by Media Integration Layer (MIL). Each element of WPF creates and adds one or more composition nodes to the tree. The composition nodes contain rendering instructions, such as clipping and transformation instructions, along with other visual attributes. Thus the entire application is represented as a collection of composition nodes, which are stored in a buffer in the system memory. Periodically, MIL walks the tree and executes the rendering instructions in each node, thus compositing each element on to a DirectX surface, which is then rendered on screen. MIL uses the painter's algorithm, where all the components are rendered from back of the screen to the front, which allows complex effects like transparencies to be easily achieved. This rendering process is hardware accelerated using the GPU.[6] The composition tree is cached by MIL, creating a retained mode graphics, so that any changes to the composition tree needs only to be incrementally communicated to MIL. This also frees the applications of managing repainting the screen, MIL can do that itself as it has all the information necessary. Animations can be implemented as time-triggered changes to the composition tree. On the user visible side, animations are specified declaratively, by setting some animation effect to some element via a property and specifying the duration. The code-behind updates the specific nodes of the tree, via Visual objects, to represent both the intermediate states at specified time intervals as well as the final state of the element. MIL will render the changes to the element automatically.
[[zh:Windows Presentation Foundation]]
 
-->
 
Tutte le applicazioni WPF sono composte da 2 thread: il thread per gestire la UI e l'altro thread detto render thread che in maniera nascosta gestisce le funzioni di rendering e repainting. Perciò rendering e repainting sono gestite da WPF stesso, senza intervento dello sviluppatore. Il thread per la UI ospita il Dispatcher (attraverso un'istanza dell'oggetto DispatcherObject), il quale mantiene una coda di operazioni che necessitano di essere eseguite sulla UI (come un albero fatto di oggetti Visual, detto albero visuale) ordinate per priorità. Gli eventi della UI, compreso il cambiamento di una proprietà che riguarda il layout, ed eventi causati dall'interazione dell'utente sono accodati nel dispatcher, il quale invoca i gestori degli eventi. Microsoft raccomanda che i gestori degli eventi aggiornino solo le proprietà per riflettere il nuovo contenuto come risposta; il nuovo contenuto sarà generato o recuperato dal render thread. Il render thread prende una copia dell'albero visuale e attraversa l'albero calcolando quali componenti saranno visibili e renderizzandoli come superfici Direct3D. Il render threads inoltre salva in una cache l'albero visuale, così devono essere comunicati solo i cambiamenti all'albero, e perciò soltanto i pixel cambiati risulteranno aggiornati. WPF supporta un modello di layout estendibile. Il layout è diviso in due fasi che svolgono le funzioni di misurare ed adattare. Nella fase di misura vengono ricorsivamente chiamati tutti gli elementi e viene determinato lo spazio che essi prendono. Nella fase di adattamento, gli elementi figli vengono ricorsivamente adattati nello spazio dei loro genitori, invocando l'algoritmo di layout del modulo in uso.
 
== Note ==
<references/>
 
== Altri progetti ==
{{interprogetto}}
 
== Collegamenti esterni ==
* {{cita web|https://github.com/dotnet/wpf|Repository su GitHub}}
 
{{portale|Microsoft}}
 
[[Categoria:Microsoft Windows]]
[[Categoria:InterfacceLibrerie grafiche]]