Architettura di modifica dei contesti

In questo argomento viene illustrato il ruolo del contesto di modifica quando si sviluppano provider di funzionalità e connettori di funzionalità per WPF Designer per Visual Studio. Per ulteriori informazioni sui provider di funzionalità e sui connettori di funzionalità, vedere Provider di funzionalità e connettori di funzionalità.

Contesto di modifica: acquisizione dello stato corrente della finestra di progettazione

In una finestra di progettazione viene accumulata una quantità significativa di informazioni sullo stato man mano che viene utilizzata. Lo stato può rappresentare qualsiasi tipo di informazioni sulla fase di progettazione, ad esempio oggetti nella selezione corrente o il comportamento derivante da un clic del mouse. Lo stato deve essere memorizzato in una posizione centrale, in modo che possa essere recuperato quando necessario. La classe EditingContext rappresenta il repository di stato centrale per la finestra di progettazione.

Servizi

Un servizio è una singola istanza di una classe che definisce un comportamento ben descritto. Un servizio fornisce comportamento e implementazione nella finestra di progettazione. Una volta creato in un contesto, il servizio è sempre presente fino a quando il contesto non viene eliminato. I servizi non scompaiono mai dal contesto. I servizi hanno valori dell'istanza coerenti, pertanto è sempre sicuro memorizzarli nella cache. Per un esempio di codice che mostra come implementare un servizio, vedere Procedura: creare un connettore di funzionalità personalizzato.

Elementi di contesto

Un elemento di contesto è un oggetto immutabile e contiene lo stato. Alcuni elementi di contesto inoltre definiscono metodi, che possono eseguire operazioni sullo stato che contengono.

Un elemento di contesto può essere aggiunto e rimosso da un contesto. Gli elementi di contesto sono temporanei, ma hanno sempre un valore. Anche se un particolare elemento di contesto non è nel contesto, l'elemento dispone di un valore predefinito e non restituisce mai null.

A differenza di un servizio, il valore di un elemento di contesto può cambiare in qualsiasi momento, quindi si consiglia di non memorizzare mai nella cache un elemento di contesto. È possibile sottoscrivere un callback di modifica, che viene generato quando un particolare tipo di elemento di contesto cambia.

Gli elementi di contesto non sono modificabili, ma nuovi elementi di contesto possono sostituire quelli esistenti per simulare la modificabilità.

Sottoscrizioni

Servizi ed elementi di contesto dispongono di gestori. I gestori di servizi e di elementi di contesto sono essenzialmente tabelle che contengono dati. Ad esempio, si utilizza il gestore dei servizi per pubblicare servizi nuovi.

I gestori di servizi e di elementi di contesto forniscono inoltre un meccanismo di sottoscrizione che notifica al codice quando un particolare dato è presente. Questa notifica viene implementata come un delegato di callback. Una sottoscrizione è un delegato che viene chiamato quando un particolare servizio o un tipo di elemento di contesto è stato aggiunto.

Analogie con il framework della finestra di progettazione ComponentModel

Il contesto di modifica è concettualmente simile alle interfacce IDesignerHost e IServiceContainer nello spazio dei nomi System.ComponentModel.Design. Per ulteriori informazioni, vedere Confronto tra framework di Progettazione Windows Form e framework di Progettazione WPF.

Vedere anche

Riferimenti

Microsoft.Windows.Design.Services

EditingContext

ContextItem

Altre risorse

Estensibilità di Progettazione WPF