Quando faccio derivare da UIElement
e FrameworkElement
considerando FrameworkElement
eredita UIElement
. Qualcuno può dare esempi di vita reale?UIElement vs FrameworkElement in WPF/Silverlight
risposta
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
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
).
- 1. UIElement vs FrameworkElement
- 2. ckeditor aggiunge dinamicamente uiElement
- 3. Come copiare un FrameworkElement incluso il contenuto in overflow?
- 4. Come clonare UIElement in WinRT XAML C#?
- 5. WPF - Ottieni dimensioni di UIElement in memoria?
- 6. Errore di aggiornamento UIElement WPF?
- 7. Esiste un identificativo univoco per UIElement wpf?
- 8. ListBox WPF - Ottenere UIElement invece di SelectedItem
- 9. WPF FrameworkElement che non riceve input del mouse
- 10. Uso associazione dati sul valore che è un FrameworkElement
- 11. Errore WPF: impossibile trovare Governance FrameworkElement per l'elemento di destinazione
- 12. DependencyObject non è in grado di trovare FrameworkElement che governa per l'elemento di destinazione, anche se quell'oggetto si trova nell'albero logico di un FrameworkElement
- 13. Come controllare se sto cancellando (Backspace, Delete o 'Cut') un UIElement in un RichTextBox?
- 14. * vs ** vs *** in Proguard?
- 15. Ridimensiona immagine in WPF
- 16. Come accedere a x: Nome proprietà nel codice - per oggetti non FrameworkElement?
- 17. bigtable vs cassandra vs simpledb vs dynamo vs couchdb vs hypertable vs riak vs hbase, cosa hanno in comune?
- 18. Trova posizione di Button/UIElement sullo schermo relativo alla griglia Windows Phone
- 19. Prestazioni XAML: imposta il canale alfa di un pennello rispetto a Opacity di FrameworkElement
- 20. Come accedere a livello di programmazione a ToolTipService di Silverlight FrameworkElement?
- 21. Come visualizzare UIElement ma senza interazioni dell'interfaccia utente (ad tocchi, scatti, ...)
- 22. Misurare il tempo in Linux - tempo vs orologio vs getrusage vs clock_gettime vs gettimeofday vs timespec_get?
- 23. limite vs esiste vs count (*) vs count (id) in MySQL
- 24. in linea vs __inline vs __inline__ vs __forceinline?
- 25. Come posso ottenere lo stato visuale corrente di un oggetto WPF FrameworkElement?
- 26. Informazioni sulla casella con l'applicazione è l'agente (UIElement) impostato su SÌ?
- 27. Int32 Int64 vs vs Int in C#
- 28. In goniometro, browser.isElementPresent vs element.isPresent vs element.isElementPresent
- 29. Elenco vs Set vs Borsa in NHibernate
- 30. link_to vs url_for vs percorso in Rails
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