다음을 통해 공유


명령 결과

이전: 확장에 최상위 명령 추가

IInvokableCommand는 명령 팔레트에서 실행 가능한 단일 항목을 나타내고 사용자가 명령을 선택할 때 트리거됩니다.

명령을 선택하면 Invoke 메서드가 호출됩니다. 여기서 확장이 수행해야 하는 작업에 대한 논리를 구현합니다. Invoke 메서드는 명령을 실행한 후 응답하는 방법을 명령 팔레트에 알려주는 값을 반환 CommandResult해야 합니다. 예를 들어 메시지를 표시할지, 파일을 열지, 아무 작업도 수행하지 않습니다.

이 페이지에서는 반환할 수 있는 7가지 유형 CommandResult 과 각 유형에 대해 설명합니다.

비고

이 페이지에 나열된 다양한 CommandResult 메서드에 대한 코드 예제가 있습니다.

KeepOpen 명령 결과

KeepOpen 명령 결과는 아무 것도 수행하지 않습니다. 색상표는 현재 페이지 스택 및 쿼리와 함께 현재 상태로 남습니다. 이는 명령 팔레트에서 사용자를 유지하려는 명령에서 현재 페이지로 계속 작업하려는 명령에 유용할 수 있습니다.

비고

복귀할 때에도 명령 팔레트에서 새 앱이나 창을 시작하면, 해당 창이 포커스를 받을 때 팔레트가 자동으로 숨겨집니다.

명령 결과 숨기기

이 명령 결과는 현재 페이지를 열어 두지만 명령 팔레트를 숨깁니다. 이는 사용자를 명령 팔레트에서 잠시 벗어나고 이 컨텍스트로 돌아가려는 명령에 유용할 수 있습니다.

GoBack 명령 결과

이 결과는 사용자가 명령 팔레트에서 이전 페이지로 돌아가며, 창은 계속 표시됩니다. 이는 양식 페이지에 적합하며, 명령을 수행하면 사용자가 이전 컨텍스트로 다시 이동해야 합니다.

GoHome 명령 결과

이 결과는 사용자가 명령 팔레트의 기본 페이지로 돌아갑니다. 색상표가 계속 표시됩니다(색상표가 포커스를 잃는 상황이 없는 한). 최상위 명령을 변경한 시나리오에 이 명령을 사용하는 것이 좋습니다.

명령 결과 해제

이 결과는 작업이 실행된 후 명령 팔레트를 숨기고 홈페이지로 돌아갑니다. 다음 시작 시 명령 팔레트는 빈 쿼리를 사용하여 기본 페이지에서 시작됩니다. 이는 일회성 작업이거나 명령 팔레트를 열어 둘 필요가 없는 명령에 유용합니다.

사용할 다른 항목을 모르는 경우 기본값이어야 합니다. 사용자는 팔레트에 들어가 필요한 것을 찾아서 처리하는 것이 이상적입니다.

ShowToast 명령 결과

이 결과는 사용자에게 일시적인 데스크톱 수준 메시지를 표시합니다. 이는 색상표를 닫을 때 작업이 수행되었다는 확인을 표시하는 데 특히 유용합니다.

도우미의 CopyTextCommand를 확인하세요. 이 명령은 "클립보드에 복사됨"이라는 텍스트가 포함된 알림 메시지를 표시하고, 그 후에 팔레트를 닫습니다.

기본적으로 CommandResult.ShowToast(string) 도우미의 결과는CommandResult.Dismiss다음과 같습니다. 그러나 원하는 경우 결과를 다른 결과로 변경할 수 있습니다. 이렇게 하면 알림을 표시하고, 원하는 경우 팔레트를 열어 놓을 수 있습니다.

명령 결과 확인

이 결과에는 사용자에게 확인 대화 상자가 표시됩니다. 사용자가 대화 상자를 확인하면 해당 대화 PrimaryCommandConfirmationArgs 가 수행됩니다.

이는 파괴적인 작업이 있거나 사용자 의도를 확인해야 하는 명령에 유용합니다.

예시

다음은 각 종류의 명령에 대해 하나의 명령이 있는 페이지입니다 CommandResult.

  1. /Pages/<ExtensionName>Page.cs 열기
  2. GetItems를 아래의 GetItems로 교체하십시오.

using Microsoft.CommandPalette.Extensions;
using Microsoft.CommandPalette.Extensions.Toolkit;

internal sealed partial class <ExtensionName>Page : ListPage
{
    public <ExtensionName>Page()
    {
        Icon = IconHelpers.FromRelativePath("Assets\\StoreLogo.png");
        Title = "Example command results";
        Name = "Open";
    }

    public override IListItem[] GetItems()
    {
        ConfirmationArgs confirmArgs = new()
        {
            PrimaryCommand = new AnonymousCommand(
                () =>
                {
                    ToastStatusMessage t = new("The dialog was confirmed");
                    t.Show();
                })
            {
                Name = "Confirm",
                Result = CommandResult.KeepOpen(),
            },
            Title = "You can set a title for the dialog",
            Description = "Are you really sure you want to do the thing?",
        };

        return
        [
            new ListItem(new AnonymousCommand(null) { Result = CommandResult.KeepOpen() }) { Title = "Keep the palette open" },
            new ListItem(new AnonymousCommand(null) { Result = CommandResult.Hide() }) { Title = "Hide the palette" },
            new ListItem(new AnonymousCommand(null) { Result = CommandResult.GoBack() }) { Title = "Go back" },
            new ListItem(new AnonymousCommand(null) { Result = CommandResult.GoHome() }) { Title = "Go home" },
            new ListItem(new AnonymousCommand(null) { Result = CommandResult.Dismiss() }) { Title = "Dismiss the palette" },
            new ListItem(new AnonymousCommand(null) { Result = CommandResult.ShowToast("What's up") }) { Title = "Show a toast" },
            new ListItem(new AnonymousCommand(null) { Result = CommandResult.Confirm(confirmArgs) }) { Title = "Confirm something" },
        ];
    }
}
  1. 확장 배포
  2. 명령 팔레트에서 Reload

CommandResult에 대한 여러 명령이 있는 확장 스크린샷

다음 단계: markdown 콘텐츠 표시