Vytvoření ovládacích prvků uživatelského rozhraní jako balíčků NuGet

Počínaje Visual Studio 2017 můžete využít přidané funkce pro ovládací prvky UPW a WPF, které dodáváte v NuGet balíčcích. Tato příručka vás provede těmito možnostmi v kontextu ovládacích prvků UPW pomocí ukázky ExtensionSDKasNuGetPackage. Totéž platí pro ovládací prvky WPF, pokud není uvedeno jinak.

Požadavky

  1. Visual Studio 2017
  2. Principy vytváření balíčků UPW

Generování rozložení knihovny

Poznámka

To platí jenom pro ovládací prvky UPW.

GenerateLibraryLayout Nastavení vlastnosti zajistí, že se výstup sestavení projektu vygeneruje v rozložení, které je připravené k zabalení bez nutnosti jednotlivých položek souboru v nuspecu.

Ve vlastnostech projektu přejděte na kartu sestavení a zaškrtněte políčko Generovat rozložení knihovny. Tím upravíte soubor projektu a nastavíte GenerateLibraryLayout příznak na true pro aktuálně vybranou konfiguraci sestavení a platformu.

Případně upravte soubor projektu tak, aby se přidal <GenerateLibraryLayout>true</GenerateLibraryLayout> do první nepodmíněné skupiny vlastností. To by použilo vlastnost bez ohledu na konfiguraci sestavení a platformu.

Přidání podpory podokna nástrojů nebo prostředků pro ovládací prvky XAML

Pokud chcete, aby se ovládací prvek XAML zobrazil v panelu nástrojů návrháře XAML v Visual Studio a podokně Assets v Blendu, vytvořte VisualStudioToolsManifest.xml soubor v kořenové tools složce projektu balíčku. Tento soubor se nevyžaduje, pokud ovládací prvek nepotřebujete, aby se zobrazil v podokně nástrojů nebo assetů.

\build
\lib
\tools
    VisualStudioToolsManifest.xml

Struktura souboru je následující:

<FileList>
  <File Reference = "your_package_file">
    <ToolboxItems UIFramework="WPF" VSCategory="vs_category" BlendCategory="blend_category">
      <Item Type="type_full_name_1" />

      <!-- Any number of additional Items -->
      <Item Type="type_full_name_2" />
      <Item Type="type_full_name_3" />
    </ToolboxItems>
  </File>
</FileList>

kde:

  • your_package_file: název ovládacího souboru, například ManagedPackage.winmd ("ManagedPackage" je libovolný název použitý pro tento příklad a nemá žádný jiný význam).
  • vs_category: Popisek skupiny, ve které se má ovládací prvek objevit v panelu nástrojů návrháře Visual Studio. Je VSCategory nutné, aby se ovládací prvek zobrazil v sadě nástrojů. ui_framework: Název architektury, například WPF, si všimněte, že UIFramework atribut je vyžadován na uzlech ToolboxItems na Visual Studio 16.7 Preview 3 nebo vyšší, aby se ovládací prvek zobrazil na panelu nástrojů.
  • blend_category: Popisek skupiny, ve které se má ovládací prvek objevit v podokně Assets návrháře Blendu. Ovládací BlendCategory prvek je nezbytný pro zobrazení v prostředcích.
  • type_full_name_n: Plně kvalifikovaný název každého ovládacího prvku, včetně oboru názvů, například ManagedPackage.MyCustomControl. Všimněte si, že formát tečky se používá pro spravované i nativní typy.

V pokročilejších scénářích můžete také zahrnout více prvků v <FileList> případě, že jeden balíček obsahuje více <File> řídicích sestavení. Pokud chcete ovládací prvky uspořádat do samostatných kategorií, můžete mít také několik <ToolboxItems> uzlů v jednom.<File>

V následujícím příkladu se ovládací prvek implementovaný v ManagedPackage.winmd této skupině zobrazí v Visual Studio a Blend ve skupině s názvem Managed Package a MyCustomControl. Všechny tyto názvy jsou libovolné.

<FileList>
  <File Reference = "ManagedPackage.winmd">
    <ToolboxItems UIFramework="WPF" VSCategory="Managed Package" BlendCategory="Managed Package">
      <Item Type="ManagedPackage.MyCustomControl" />
    </ToolboxItems>
  </File>
</FileList>

An example control as it appear in Visual Studio

An example control as it appear in Blend

Poznámka

Musíte explicitně zadat každý ovládací prvek, který chcete zobrazit v podokně nástrojů nebo prostředků. Ujistěte se, že je zadáte ve formátu Namespace.ControlName.

Přidání vlastních ikon do ovládacích prvků

Pokud chcete zobrazit vlastní ikonu v podokně nástrojů nebo prostředků, přidejte do projektu obrázek nebo odpovídající design.dll projekt s názvem Obor názvů.ControlName.extension a nastavte akci sestavení na Vložený zdroj. Musíte také zajistit, aby přidružené AssemblyInfo.cs určuje atribut ProvideMetadata - [assembly: ProvideMetadata(typeof(RegisterMetadata))]. Podívejte se na tuto ukázku.

Podporované formáty jsou .png, , , .gif.jpg.jpeg, a .bmp. Doporučený formát je BMP24 v 16 pixelech o 16 pixelů.

Tool box icon sample

Růžové pozadí je nahrazeno za běhu. Ikony se přebarví při změně Visual Studio motivu a očekává se barva pozadí. Další informace najdete v tématu Obrázky a ikony pro Visual Studio.

V následujícím příkladu projekt obsahuje soubor obrázku s názvem "ManagedPackage.MyCustomControl.png".

Setting a custom icon in a project

Poznámka

V případě nativních ovládacích prvků musíte do projektu umístit ikonu jako zdroj design.dll .

Podpora konkrétních verzí platformy Windows

Balíčky UPW mají targetPlatformVersion (TPV) a TargetPlatformMinVersion (TPMinV), které definují horní a dolní hranice verze operačního systému, kde je možné aplikaci nainstalovat. Protokol TPV dále určuje verzi sady SDK, pro kterou je aplikace sestavená. Při vytváření balíčku UPW mějte na paměti tyto vlastnosti: použití rozhraní API mimo hranice verzí platformy definovaných v aplikaci způsobí selhání sestavení nebo selhání aplikace za běhu.

Řekněme například, že jste pro balíček ovládacích prvků nastavili tpMinV na Windows 10 Anniversary Edition (10.0; Build 14393), takže chcete zajistit, aby byl balíček spotřebován pouze projekty UPW, které odpovídají dané dolní hranici. Pokud chcete povolit využívání balíčku projekty UPW, musíte zabalit ovládací prvky s následujícími názvy složek:

\lib\uap10.0.14393\*
\ref\uap10.0.14393\*

NuGet automaticky zkontroluje tpMinV projektu s využitím a pokud je nižší než Windows 10 Anniversary Edition (10.0; Build 14393)

V případě WPF řekněme, že chcete, aby balíček ovládacích prvků WPF byl spotřebován projekty, které cílí na rozhraní .NET Framework verze 4.6.1 nebo vyšší. Chcete-li to vynutit, je nutné zabalit ovládací prvky s následujícími názvy složek:

\lib\net461\*
\ref\net461\*

Přidání podpory doby návrhu

Pokud chcete nakonfigurovat, kde se vlastnosti ovládacího prvku zobrazují v inspektoru vlastností, přidejte vlastní adornery atd., umístěte soubor design.dll do lib\uap10.0.14393\Design složky podle potřeby cílové platformy. Pokud chcete zajistit, aby funkce Upravit šablonu pro úpravy kopírování > fungovala, musíte zahrnout Generic.xaml všechny slovníky prostředků, které sloučí do složky (znovu pomocí názvu skutečného <your_assembly_name>\Themes sestavení). (Tento soubor nemá žádný vliv na chování ovládacího prvku za běhu.) Struktura složek by se tak zobrazovala takto:

\lib
  \uap10.0.14393
    \Design
      \MyControl.design.dll
    \your_assembly_name
      \Themes
        Generic.xaml

V případě WPF pokračujte v příkladu, ve kterém chcete, aby balíček ovládacích prvků WPF byl spotřebován projekty, které cílí na rozhraní .NET Framework verze 4.6.1 nebo vyšší:

\lib
  \net461
    \Design
      \MyControl.design.dll
    \your_assembly_name
      \Themes
        Generic.xaml

Poznámka

Ve výchozím nastavení se vlastnosti ovládacího prvku zobrazí v kategorii Různé v inspektoru vlastností.

Použití řetězců a prostředků

Do balíčku můžete vložit řetězcové prostředky,.resw které můžete použít pomocí ovládacího prvku nebo projektu UPW, nastavit vlastnost .reswAkce sestavení souboru na PRIResource.

Příklad, odkaz na MyCustomControl.cs v ExtensionSDKasNuGetPackage ukázka.

Poznámka

To platí jenom pro ovládací prvky UPW.

Viz také