Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Poprzedni: Tworzenie rozszerzenia. Zaczniemy od projektu utworzonego w tym artykule.
Teraz, po utworzeniu rozszerzenia, nadszedł czas, aby dodać do niego polecenia.
Dodawanie poleceń
Możemy zacząć od nawigowania do /Pages/<ExtensionName>Page.cs pliku. Ten plik to ListPage, który będzie wyświetlany, gdy użytkownik wybierze rozszerzenie. W tym miejscu powinny zostać wyświetlone następujące informacje:
public <ExtensionName>Page()
{
Icon = IconHelpers.FromRelativePath("Assets\\StoreLogo.png");
Title = "My sample extension";
Name = "Open";
}
public override IListItem[] GetItems()
{
return [
new ListItem(new NoOpCommand()) { Title = "TODO: Implement your extension here" }
];
}
W tym miejscu widać, że ustawiliśmy ikonę strony, tytułu i nazwy wyświetlanej na najwyższym poziomie po wybraniu polecenia. Metoda GetItems to miejsce, w którym zostanie zwrócona lista poleceń, które mają być wyświetlane na tej stronie. W tej chwili po prostu zwraca pojedyncze polecenie, które nic nie robi. Zamiast tego spróbujmy otworzyć tę stronę w domyślnej przeglądarce internetowej użytkownika.
- Zaktualizuj
GetItemsdo następujących elementów:
public override IListItem[] GetItems()
{
var command = new OpenUrlCommand("https://learn.microsoft.com/windows/powertoys/command-palette/adding-commands");
return [
new ListItem(command)
{
Title = "Open the Command Palette documentation",
}
];
}
Aby zaktualizować rozszerzenie w palecie poleceń, należy wykonać następujące kroki:
- Wdrażanie rozszerzenia
- W palecie poleceń wpisz polecenie "reload", aby odświeżyć rozszerzenia na palecie
Uwaga / Notatka
Istnieje kilka opcji ponownego ładowania, upewnij się, że wybrano opcję Ponownie załaduj rozszerzenia palety poleceń.
- Przewiń w dół do rozszerzenia i naciśnij
Enter - Naciśnij
enternaOpen the Command Palette documentation - Powinieneś zobaczyć, że polecenie otwiera dokumentację Palety Poleceń.
OpenUrlCommand to pomocnik umożliwiający otwarcie adresu URL w domyślnej przeglądarce internetowej użytkownika.
Rozszerzenie debugowania
Podczas kompilowania rozszerzenia najprawdopodobniej zechcesz go debugować.
- Dodaj komunikat debugowania do
GetItemsfunkcji.
public override IListItem[] GetItems()
{
var command = new OpenUrlCommand("https://learn.microsoft.com/windows/powertoys/command-palette/adding-commands");
+ Debug.Write("Debug message from GetItems");
return [
new ListItem(command)
{
Title = "Open the Command Palette documentation",
}
];
}
- Wdrażanie rozszerzenia
- Upewnij się, że jesteś w konfiguracji debugowania
Instrukcje dotyczące potwierdzania konfiguracji debugowania
- Spójrz na pasek narzędzi w górnej części programu Visual Studio
- Zostanie wyświetlona lista rozwijana z napisem
DebuglubRelease(obok zielonego przycisku ▶️ "Rozpocznij" ) - Jeśli zostanie wyświetlony komunikat
Release, kliknij listę rozwijaną i wybierz pozycjęDebug.
- Uruchom aplikację w trybie debugowania, naciskając przycisk "Start" w kolorze zielonym ▶️ lub naciśnij
F5 - Upewnij się, że okno wyjściowe jest ustawione, aby wyświetlić
Debugwynik (Ctrl + Alt + O)
- W palecie poleceń uruchom
reload - Przejdź do rozszerzenia i wybierz pozycję
Open the Command Palette documentation. - W oknie Wyjście programu Visual Studio powinno zostać wyświetlone
Debug message from GetItems
InvokableCommand, komenda
Kontynuujmy tworzenie nowego polecenia, które wyświetla MessageBox. W tym celu musimy utworzyć nową klasę, która implementuje InvokableCommand.
- W programie Visual Studio dodaj nowy plik klasy do
Pageskatalogu- Skrót klawiaturowy: naciśnij Ctrl + Shift + A
- Lub w Eksploratorze rozwiązań przejdź do pozycji Projekt > Dodaj nowy element...
- W oknie dialogowym Dodawanie nowego elementu:
- Wybierz pozycję Klasa z listy.
- Nadaj nazwę plikowi klasy:
ShowMessageCommand.cs - Kliknij przycisk Dodaj.
- Zastąp domyślny kod klasy:
using System.Runtime.InteropServices;
namespace <ExtensionName>;
internal sealed partial class ShowMessageCommand : InvokableCommand
{
public override string Name => "Show message";
public override IconInfo Icon => new("\uE8A7");
public override CommandResult Invoke()
{
// 0x00001000 is MB_SYSTEMMODAL, which will display the message box on top of other windows.
_ = MessageBox(0, "I came from the Command Palette", "What's up?", 0x00001000);
return CommandResult.KeepOpen();
}
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern int MessageBox(IntPtr hWnd, string text, string caption, uint type);
}
Teraz możemy dodać to polecenie do listy poleceń w <ExtensionName>Page.cs pliku:
- W pliku
<ExtensionName>.cszaktualizuj elementGetItems:
public override IListItem[] GetItems()
{
var command = new OpenUrlCommand("https://learn.microsoft.com/windows/powertoys/command-palette/creating-an-extension");
var showMessageCommand = new ShowMessageCommand();
return [
new ListItem(command)
{
Title = "Open the Command Palette documentation",
},
new ListItem(showMessageCommand),
];
}
- Wdrażanie rozszerzenia
- W palecie poleceń,
Reload
I presto - polecenie, aby wyświetlić pole komunikatu!
Wskazówka
W tym momencie prawdopodobnie zechcesz zainicjować repozytorium git / {inną wybraną metodę kontroli źródła} dla projektu. Ułatwi to śledzenie zmian i udostępnianie rozszerzenia innym osobom.
Zalecamy korzystanie z usługi GitHub, ponieważ łatwo jest współpracować nad rozszerzeniem z innymi osobami, uzyskiwać opinie i udostępniać je światu.
Typy stron
Do tej pory pracowaliśmy tylko z poleceniami, które "coś robią". Można jednak również dodawać polecenia, które wyświetlają dodatkowe strony w palecie poleceń. W palecie istnieją dwa typy poleceń:
-
InvokableCommand- Są to polecenia, które wykonują coś -
IPage- Są to polecenia, które pokazują coś
Ponieważ IPage są implementacjami ICommand, można ich używać w dowolnym miejscu, gdzie można używać poleceń. Oznacza to, że można dodać je do listy poleceń najwyższego poziomu lub do listy poleceń na stronie, menu kontekstowe w elemencie itp.
Istnieją dwa różne rodzaje stron, które można wyświetlić:
- ListPage — jest to strona zawierająca listę poleceń. To właśnie, z czym pracowaliśmy do tej pory.
-
ContentPage — jest to strona zawierająca bogatą zawartość dla użytkownika. Dzięki temu można określić abstrakcyjną zawartość i pozwolić, aby paleta poleceń zajmowała się renderowaniem zawartości w środowisku natywnym. Do tej pory obsługiwane są dwa różne typy zawartości:
- Zawartość języka Markdown — jest to zawartość napisana w języku Markdown i renderowana w palecie poleceń. Aby uzyskać szczegółowe informacje, zobacz MarkdownContent .
- Zawartość formularza — jest to zawartość, która wyświetla użytkownikowi formularz, a następnie zwraca wyniki tego formularza do rozszerzenia. Są one obsługiwane przez karty adaptacyjne Jest to przydatne do uzyskiwania danych wejściowych użytkownika lub wyświetlania bardziej złożonych układów informacji. Zobacz ZawartośćFormularza aby uzyskać szczegółowe informacje.
Dodawanie kolejnych poleceń
Zacznij od dodania nowej strony zawierającej listę poleceń. Utwórz nową klasę, która implementuje program ListPage.
- W folderze
Pagesutwórz nową klasę o nazwieMySecondPage - Zaktualizuj kod do:
using Microsoft.CommandPalette.Extensions.Toolkit;
using System.Linq;
namespace <ExtensionName>;
internal sealed partial class MySecondPage : ListPage
{
public MySecondPage()
{
Icon = new("\uF147"); // Dial2
Title = "My second page";
Name = "Open";
}
public override IListItem[] GetItems()
{
// Return 100 CopyText commands
return Enumerable
.Range(0, 100)
.Select(i => new ListItem(new CopyTextCommand($"{i}"))
{
Title = $"Copy text {i}"
}).ToArray();
}
}
1.Zaktualizuj element , <ExtensionName>Page.cs aby uwzględnić tę nową stronę:
public override IListItem[] GetItems()
{
OpenUrlCommand command = new("https://learn.microsoft.com/windows/powertoys/command-palette/creating-an-extension");
return [
new ListItem(command)
{
Title = "Open the Command Palette documentation",
},
new ListItem(new ShowMessageCommand()),
+ new ListItem(new MySecondPage()) { Title = "My second page", Subtitle = "A second page of commands" },
];
}
- Wdrażanie rozszerzenia
- W palecie poleceń,
Reload
W rozszerzeniu powinna się pojawić nowa strona zawierająca 100 poleceń, które kopiują liczbę do schowka.
Dalej: aktualizowanie listy poleceń
Treści powiązane
Windows developer