Sdílet prostřednictvím


Inicializace návrháře a konfigurace metadat

Manipulace s atributy metadat a filtru přidružených k návrháři nebo komponentě návrháře poskytuje mechanismus pro definování nástrojů, které konkrétní návrhář používá ke zpracování různých Type objektů (například datových struktur, tříd nebo grafických entit), když je návrhář dostupný a jak je integrované vývojové prostředí sady Visual Studio nakonfigurované tak, aby podporovalo návrháře (například kategorii sady nástrojů nebo kartu).

Sada Visual Studio SDK poskytuje několik mechanismů, které usnadňují řízení inicializace návrhového komponentu nebo návrháře a manipulaci s jejich metadaty prostřednictvím balíčku VSPackage.

Inicializace metadat a informací o konfiguraci

Vzhledem k tomu, že jsou načteny na vyžádání, nemusí být balíčky VSPackage před vytvořením instance návrháře načteny prostředím sady Visual Studio. Proto balíčky VSPackages nemohou při vytváření použít standardní mechanismus určený ke konfiguraci návrháře nebo komponenty návrháře, kterým je zpracování DesignerCreated události. Místo toho balíček VSPackage implementuje instanci DesignSurfaceExtension rozhraní a zaregistruje se, aby poskytoval vlastní nastavení, označovaná jako rozšíření návrhové plochy.

Přizpůsobení inicializace

Přizpůsobení návrhového nástroje, komponenty nebo povrchu návrhového rozhraní zahrnuje:

  1. Úprava metadat návrháře a efektivní změna způsobu přístupu nebo převodu určitého Type objektu.

    To se obvykle provádí prostřednictvím UITypeEditor nebo TypeConverter mechanismů.

    Například když jsou inicializováni návrháři založení na System.Windows.Forms, prostředí sady Visual Studio upraví objekty UITypeEditor používané s návrhářem tak, že Image použijí správce prostředků k získání bitmap namísto souborového systému.

  2. Integrace s prostředím, například přihlášením k odběru událostí nebo získáním informací o konfiguraci projektu. Informace o konfiguraci projektu a možnost předplatit události můžete získat pomocí rozhraní ITypeResolutionService.

  3. Úprava uživatelského prostředí aktivací odpovídajících kategorií Toolbox nebo aplikováním omezení použitelnosti návrháře použitím instance ToolboxItemFilterAttribute třídy na návrháře.

Inicializace návrháře pomocí balíčku VSPackage

Balíček VSPackage by měl zpracovávat inicializaci návrháře pomocí:

  1. Vytváření objektu, který implementuje třídu DesignSurfaceExtension.

    Poznámka:

    Třída DesignSurfaceExtension by nikdy neměla být implementována na stejném objektu jako třída Package.

  2. Registrace třídy, která implementuje DesignSurfaceExtension jako poskytování podpory pro rozšíření návrháře VSPackage. Zaregistrujte třídu pomocí instancí DesignSurfaceExtensionAttribute, ProvideObjectAttribute a ProvideServiceAttribute na třídu, která poskytuje implementaci Package pro VSPackage.

Pokaždé, když se vytvoří návrhář nebo komponenta návrháře, prostředí sady Visual Studio:

  • Přistupuje k jednotlivým registrovaným poskytovatelům rozšíření návrhové plochy.

  • Zajišťuje vytvoření a inicializaci instance objektu DesignSurfaceExtension každého zprostředkovatele rozšíření povrchu návrhu.

  • Volá metodu OnDesignerCreated nebo metodu OnComponentCreated každého poskytovatele rozšíření návrhové plochy (podle potřeby).

Při implementaci objektu DesignSurfaceExtension jako člena balíčku VSPackage je důležité pochopit, že:

  • Prostředí sady Visual Studio neposkytuje žádnou kontrolu nad tím, jaká metadata nebo jiná nastavení konfigurace upravuje konkrétní DesignSurfaceExtension zprostředkovatel. Je možné, že dva nebo více DesignSurfaceExtension poskytovatelů mění stejnou funkci návrháře v konfliktních způsobech, přičemž konečná úprava je konečná. Jedná se o neurčité změny, které se naposledy použily.

  • Implementaci objektu DesignSurfaceExtension je možné explicitně omezit na konkrétní návrháře použitím instancí ToolboxItemFilterAttribute této implementace. Další informace o filtrování položek panelu nástrojů naleznete v části ToolboxItemFilterAttribute a ToolboxItemFilterType.

Další zajištění metadat

Balíček VSPackage může změnit konfiguraci návrháře nebo komponenty návrháře jiné než v době návrhu.

Třídu ProvideDesignerMetadataAttribute lze použít programově nebo použít na balíček VSPackage, který poskytuje návrháře.

Instance ProvideDesignerMetadataAttribute třídy se používá k úpravě metadat součástí vytvořených na návrhové ploše. Můžete například nahradit výchozí prohlížeč vlastností používaný CommonDialog objekty prohlížečem vlastních vlastností.

Úpravy poskytované instancí ProvideDesignerMetadataAttribute použité na implementaci balíčku VSPackage Package můžou mít jeden ze dvou rozsahů.

  • Globální – pro všechny nové instance dané komponenty

  • Místní – týká se pouze instance komponenty vytvořené na návrhové ploše poskytované aktuálním balíčkem VSPackage.

Vlastnost IsGlobalProvideDesignerMetadataAttribute instance použité na implementaci Package VSPackage určuje tento obor.

Aplikace atributu na implementaci Package, kde je vlastnost IsGlobal objektu ProvideDesignerMetadataAttribute nastavena na true, jak je uvedeno níže, změní prohlížeč v celém prostředí Visual Studio.

[ProvideDesignerMetadata(typeof(Color), typeof(CustomBrowser), IsGlobal=true )]

internal class MyPackage : Package {}

Pokud byl globální příznak nastaven na false, změna metadat je místní pro aktuálního návrháře podporovaného aktuálním balíčkem VSPackage:

[ProvideDesignerMetadata(typeof(Color), typeof(CustomBrowser), IsGlobal=false )]

internal class MyPackage : Package {}

Poznámka:

Návrhová plocha podporuje pouze vytváření komponent, a proto mohou mít pouze místní metadata. V předchozím příkladu jsme se pokusili upravit vlastnost, například Color vlastnost objektu. Pokud by byl false předán pro globální příznak, CustomBrowser by se nikdy nezobrazil, protože návrhář ve skutečnosti nikdy nevytvoří instanci Color. Nastavení globálního příznaku na false je užitečné pro komponenty, například ovládací prvky, časovače a dialogová okna.