Modifiche relative all'estensibilità in Visual Studio 2010
WPF Designer per Visual Studio fornisce una piattaforma complessa per l'implementazione di esperienze di progettazione personalizzate per controlli WPF e Silverlight. L'API di Estensibilità di WPF Designer si è evoluta in maniera significativa rispetto alla versione iniziale in Visual Studio 2008. Nelle sezioni seguenti vengono descritte le modifiche di Estensibilità di WPF Designer per Visual Studio 2010.
Supporto per Silverlight e più versioni di piattaforme
In Visual Studio 2008 le fasi di progettazione dei controlli potevano essere destinate soltanto alla versione più recente della piattaforma WPF. In Visual Studio 2010 questo supporto viene esteso a più piattaforme, includendo il supporto della fase di progettazione per WPF 3.5, WPF 4, Silverlight 3 e le versioni future delle piattaforme. Poiché la stessa API di estensibilità è valida per tutte queste piattaforme, gli autori della fase di progettazione dei controlli possono facilmente scrivere un'esperienza e condividerla attraverso i runtime di controllo per ciascuna piattaforma.
Supporto in Expression Blend
Le implementazioni in fase di progettazione dei controlli possono ora essere destinate a Expression Blend, utilizzando la stessa interfaccia di estensibilità disponibile in Visual Studio. Si può decidere di fornire esperienze in fase di progettazione separate o comuni per i due ambienti di creazione.
Registrazione di metadati
La differenza più significativa nell'API di estensibilità consiste nel fatto che l'interfaccia IRegisterMetadata è stata sostituita con l'interfaccia IProvideAttributeTable. Questa modifica, insieme con l'abilitazione del supporto per più piattaforme, ha generato modifiche che possono determinare interruzioni nell'API di estensibilità. Ciò significa che le implementazioni in fase di progettazione dei controlli esistenti per Visual Studio 2008 non saranno caricate in Visual Studio 2010.
Inoltre, in Visual Studio 2010, viene utilizzato l'attributo ProvideMetadataAttribute per indicare che un assembly della fase di progettazione fornisce metadati alla finestra di progettazione.
Nuovi punti di estensibilità
La nuova API di estensibilità supporta anche nuove esperienze della fase di progettazione, incluse le seguenti:
Nella finestra Proprietà, supporto per l'accesso ai modelli dagli editor di categoria. Questa modifica, unita all'elevazione delle proprietà comuni in cima all'elenco delle categorie, consente agli autori dei controlli di fornire esperienze Rich Edit nella finestra Proprietà.
Nuovi metodi di utilità AdornerPanel per l'abilitazione del posizionamento facilitato dello strumento decorativo visuale relativo al controllo personalizzato.
Nuovo modello di programmazione per la condivisione delle implementazioni in fase di progettazione fra strumenti di progettazione diversi, ad esempio Visual Studio e Expression Blend.
Nuovo modello di programmazione per la condivisione delle implementazioni in fase di progettazione fra più framework di destinazione.
Confronto dell'estensibilità in Visual Studio 2008 e Visual Studio 2010
Nella tabella riportata di seguito vengono riepilogate le differenze tra la creazione di esperienze della fase progettazione personalizzate in Visual Studio 2008 e Visual Studio 2010.
Visual Studio 2008 |
Visual Studio 2010 |
---|---|
Per registrare i tipi di fase di progettazione, implementare l'interfaccia IRegisterMetadata e utilizzare la classe MetadataStore. |
Per registrare i tipi di fase di progettazione, implementare l'interfaccia IProvideAttributeTable e chiamare il metodo CreateTable. |
Non è necessario aggiungere attributi a livello di assembly. |
È necessario contrassegnare gli assembly della fase di progettazione con l'attributo ProvideMetadataAttribute. |
Per associare un tipo di finestra di progettazione a un elemento grafico, utilizzare il metodo GetImage in NewItemFactory, che può restituire vari tipi di elemento. |
Per associare un tipo di finestra di progettazione a un'icona, utilizzare il metodo GetImageStream in modo da restituire una bitmap. Vengono supportate solo bitmap. |
Per accedere alle proprietà del modello, utilizzare la proprietà di dipendenza, ad esempio: ModelProperty backgroundProperty = adornedControlModel.Properties[Control.BackgroundProperty]; |
Per accedere alle proprietà del modello, utilizzare il nome della proprietà di dipendenza, ad esempio: ModelProperty backgroundProperty = adornedControlModel.Properties["Background"]; Inoltre, è possibile definire PropertyIdentifier che rappresenta una combinazione tipo/stringa. PropertyIdentifier viene utilizzato con proprietà collegate quando una ricerca del nome semplice non è sufficiente. |
Per distinguere tra spazio del layout e spazio di rendering, utilizzare la classe AdornerCoordinateSpaces. |
La classe AdornerCoordinateSpaces non viene utilizzata. |
Per specificare la posizione di uno strumento decorativo visuale relativa al contenuto, utilizzare la classe AdornerPlacementCollection. |
Per specificare la posizione di uno strumento decorativo visuale relativa al contenuto, utilizzare i metodi SetAdornerHorizontalAlignment, SetAdornerVerticalAlignment e SetAdornerMargin. La classe AdornerPlacementCollection viene mantenuta per compatibilità con le versioni precedenti. |