Visual Studio 사용자 프롬프트 만들기
사용자 프롬프트는 사용자에게 선택하라는 메시지를 표시하는 간단한 UI 메커니즘입니다. 사용자에게 메시지, 선택 항목에 대한 1~3개의 단추, 해제 단추가 있는 대화 상자를 만들라는 메시지를 표시합니다.
참고 항목
사용자에게 메시지를 표시하는 데 사용되는 정확한 UI는 사용자 피드백 또는 기타 요인에 따라 향후 버전에서 변경될 수 있습니다.
일반적인 예는 확인/취소 프롬프트를 사용하여 확인을 요청하거나 사용자에게 작은 옵션 집합(3개 이하)을 선택하도록 요청하는 것입니다.
사용자는 항상 선택하지 않고 프롬프트를 해제할 수 있습니다.
사용자에게 제공되는 선택 항목은 형식 매개 변수에 정의된 TResult
형식의 값을 반환하도록 매핑됩니다.
사용자 프롬프트의 일부
- 메시지
- 선택 단추
- 해제 단추
시작하기
시작하려면 이 시작 섹션에서 프로젝트 만들기 섹션을 따릅니다.
사용자 프롬프트 작업
이 가이드에서는 사용자 프롬프트를 사용하기 위한 다음 시나리오를 설명합니다.
사용자 프롬프트 표시
새 확장성 모델을 사용하여 사용자 프롬프트를 만드는 것은 ShellExtensibility 도우미에서 이 ShowPromptAsync
메서드를 호출 하고 옵션을 전달하는 것만큼 간단합니다.
ShellExtensibility.ShowPromptAsync<TResult>()
ShowPromptAsync
메서드는 다음 세 개의 매개 변수를 사용합니다.
매개 변수 | Type | 필수 | 설명 |
---|---|---|---|
message | string |
예 | 프롬프트에 대한 메시지의 텍스트입니다. |
options | PromptOptions<TResult> |
예 | 값을 반환하도록 매핑하여 사용자 선택을 정의합니다. |
cancellationToken | CancellationToken |
예 | 비동기 작업에 대한 CancellationToken 입니다. 트리거되면 프롬프트가 강제로 닫힙니다. |
예시
다음 코드는 Command
간단한 메시지와 확인 단추가 있는 사용자 프롬프트를 보여 줍니다.
public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken cancellationToken)
{
await this.Extensibility.Shell().ShowPromptAsync("This is a user prompt.", PromptOptions.OK, cancellationToken))
}
기본 제공 옵션 사용
미리 정의된 PromptOptions
여러 집합은 SDK에서 사용할 수 있습니다.
OK
선택 항목 | 기본값 | Return Value |
---|---|---|
"확인" | 예 | true |
해제됨 | false |
OKCancel
선택 항목 | 기본값 | Return Value |
---|---|---|
"확인" | 예 | true |
"취소" | 아니요 | false |
해제됨 | false |
RetryCancel
선택 항목 | 기본값 | Return Value |
---|---|---|
"재시도" | 예 | true |
"취소" | 아니요 | false |
해제됨 | false |
예시
단일 "확인" 선택 항목으로 프롬프트를 만듭니다.
public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken ct)
{
// Asking the user to confirm an operation.
if (!await this.Extensibility.Shell().ShowPromptAsync("Continue with executing the command?", PromptOptions.OKCancel, ct))
{
return;
}
...
}
사용자가 "확인"을 클릭하면 ShowPromptAsync
대기하면 반환 true
됩니다. 사용자가 해제 단추를 클릭하면 반환됩니다 false
.
기본 제공 옵션의 기본 선택 항목을 "취소"로 변경
public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken ct)
{
// Asking the user to confirm an operation.
if (!await this.Extensibility.Shell().ShowPromptAsync("Continue with executing the command?", PromptOptions.OKCancel.WithCancelAsDefault(), ct))
{
return;
}
...
}
사용자 지정 옵션을 사용하여 프롬프트 만들기
기본 제공 옵션 외에도 사용자에게 제공되는 선택 항목과 각각에 매핑된 반환 값을 사용자 지정할 수 있습니다.
정의된 PromptOptions
집합을 사용하는 대신 새 인스턴스 PromptOptions<TResult>
를 만들어서 전달합니다 ShowPromptAsync
.
예시
먼저 반환 값을 정의하는 값 형식을 만듭니다.
public enum TokenThemeResult
{
None,
Solarized,
OneDark,
GruvBox,
}
그런 다음 인스턴스를 PromptOptions<TResult>
만들고 필수 message
및 인수와 cancellationToken
함께 전달 ShowPromptAsync
합니다.
public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken ct)
{
// Custom prompt
var themeResult = await this.Extensibility.Shell().ShowPromptAsync(
"Which theme should be used for the generated output?",
new PromptOptions<TokenThemeResult>
{
Choices =
{
{ "Solarized Is Awesome", TokenThemeResult.Solarized },
{ "OneDark Is The Best", TokenThemeResult.OneDark },
{ "GruvBox Is Groovy", TokenThemeResult.GruvBox },
},
DismissedReturns = TokenThemeResult.None,
DefaultChoiceIndex = 2,
},
ct);
Debug.WriteLine($"Selected Token Theme: {themeResult}");
}
컬렉션은 Choices
열거형의 값에 TokenThemeResult
사용자 선택 항목을 매핑합니다. DismissedReturns
는 사용자가 해제 단추를 클릭하면 반환되는 값을 설정합니다. DefaultChoiceIndex
는 기본 선택을 정의하는 컬렉션의 Choices
인덱스(0부터 시작)입니다.
다음 단계
다음 샘플에서는 사용자 프롬프트를 사용하는 방법을 보여 줍니다.