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
- Visual Studio 2017
- 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, žeUIFramework
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>
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ů.
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".
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 .resw
Akce sestavení souboru na PRIResource.
Příklad, odkaz na MyCustomControl.cs v ExtensionSDKasNuGetPackage ukázka.
Poznámka
To platí jenom pro ovládací prvky UPW.