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í kontrolu inicializace komponenty návrháře nebo návrháře a manipulaci s jeho metadaty pomocí 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 VSPackage nemohou při vytváření použít standardní mechanismus pro konfiguraci návrháře nebo komponenty návrháře, což 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ávrháře, komponenty nebo plochy návrháře 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ů.

    Pokud jsou například inicializovány návrháři založené na sadě Visual Studio, upraví UITypeEditor prostředí sady Visual Studio objekty Image používané s návrhářem tak, System.Windows.Formsaby používal správce prostředků k získání rastrových obrázků místo systému souborů.

  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 přihlášení k odběru událostí můžete získat získáním ITypeResolutionService rozhraní.

  3. Úprava uživatelského prostředí aktivací odpovídajících kategorií sady nástrojů nebo omezením 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. Vytvoření objektu implementuje DesignSurfaceExtension třídu.

    Poznámka:

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

  2. Registrace třídy, která implementuje DesignSurfaceExtension jako poskytování podpory pro rozšíření návrháře VSPackage. Zaregistrujte třídu použitím instancí DesignSurfaceExtensionAttribute, ProvideObjectAttributea ProvideServiceAttribute třídy, která poskytuje VSPackage implementace Package.

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

  • Přistupuje ke každému registrovanému poskytovateli rozšíření návrhu povrchu.

  • Vytvoří instanci každého zprostředkovatele rozšíření návrhu a inicializuje instanci objektu zprostředkovatele rozšíření návrhu DesignSurfaceExtension .

  • Volá metodu nebo OnComponentCreated metodu zprostředkovatele rozšíření plochy návrhu OnDesignerCreated (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ší zřizová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 Package balíčku VSPackage můžou mít jeden ze dvou oborů:

  • 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 IsGlobal ProvideDesignerMetadataAttribute instance použité na implementaci Package VSPackage určuje tento obor.

Použití atributu na implementaci Package s IsGlobal vlastností ProvideDesignerMetadataAttribute objektu nastavena na true, jak je uvedeno níže, změní prohlížeč pro celé prostředí sady 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 false byl předán pro globální příznak, nikdy by se nezobrazí, CustomBrowser protože návrhář nikdy ve skutečnosti nevytyčí instanci Color. Nastavení globálního příznaku je false užitečné pro komponenty, jako jsou ovládací prvky, časovače a dialogová okna.