2011-05-10 19 views

risposta

-1

Non ho esempi in questo momento, ma posso riferirvi a collegamenti che potrebbero aiutare.

UIElement è una classe base per la maggior parte degli oggetti con aspetto visivo e in grado di elaborare input di base in Silverlight.

FrameworkElement fornisce un framework di API comuni per gli oggetti che partecipano al layout di Silverlight. FrameworkElement definisce anche le API relative alle aree di associazione dati, struttura ad albero e durata dell'oggetto in Silverlight.

Quindi quali ulteriori funzionalità si ottengono? Vedi http://forums.silverlight.net/p/205863/482651.aspx

19

This is a good page for learning about WPF Architecture e questa risposta si applica solo a WPF. Controlla le sezioni UIElement e FrameworkElement, così come il resto se hai tempo. Ecco una citazione dalla pagina collegata che spiega perché esistono i 2 livelli:

A questo punto dell'argomento, le funzionalità "core" di WPF, caratteristiche implementate nell'assembly PresentationCore, sono state al centro dell'attenzione. Quando si creava WPF, una separazione netta tra i pezzi fondamentali (come il contratto per il layout con Measure e Arrange) e le parti del framework (come l'implementazione di un layout specifico come Grid) era il risultato desiderato. L'obiettivo era quello di fornire un punto di estensibilità basso nello stack che consentisse agli sviluppatori esterni di creare i propri framework, se necessario.

Insomma, UIElement s sanno come disegnare se stessi (perché sono derivati ​​da Visual). Possono anche utilizzare lo routed events system fornendo metodi virtuali come OnPreviewMouseDown e OnMouseDown e parte dello layout system implementando Measure e Arrange.

FrameworkElement s estendere il sistema di layout implementando alcuni dei metodi virtuali definiti in UIElement. Forniscono un modo coerente per impostare le proprietà del layout, ad es. la proprietà Margin e la proprietà MinWidth. Inoltre, possono essere abbinati allo stile e possono prendere parte allo data binding.

In risposta alla tua domanda, se hai bisogno di una delle abilità extra che FrameworkElement aggiungi, ad es. hai bisogno di stili, rilegature o di un sistema di layout che sia più facile da usare, quindi derivare da essi. In caso contrario, derivare da UIElement in quanto vi è un leggero sovraccarico dall'utilizzo di FrameworkElement.

Inoltre, si dovrebbe avere uno sguardo alla classe di Control (derivato da FrameworkElement), in quanto questi forniscono utili nuovi livelli di funzionalità, come Templating e le proprietà come Padding.

Familiarizzare con lo inheritance hierarchy è anche una buona idea, è possibile che si desideri derivare da altre classi in esso contenute (sebbene probabilmente non sia superiore alla catena rispetto a Visual).

+0

Non penso che ereditare da UIElement sia uno scenario molto ampio. La maggior parte delle volte l'utente vorrà derivare da FrameworkElement perché prima o poi avranno bisogno della proprietà DataContext, che manca all'UIElement .... – Fazi

Problemi correlati