학습
모듈
Common command bar scenarios - Training
Explore customization of command bars in Power Apps using Power Fx logic, enhancing user experience and meeting unique requirements.
AsyncRelayCommand
ICommand
AsyncRelayCommand<T>
비동기 작업을 지원하여 제공하는 RelayCommand
기능을 확장하는 구현입니다.
플랫폼 API:
AsyncRelayCommand
,AsyncRelayCommand<T>
,RelayCommand
,IAsyncRelayCommand
IAsyncRelayCommand<T>
AsyncRelayCommand
다음과 AsyncRelayCommand<T>
같은 주요 기능이 있습니다.
Task
하여 라이브러리에 포함된 동기 명령의 기능을 확장합니다.CancellationToken
매개 변수를 사용하여 비동기 함수를 래핑할 수 있으며 메서드뿐만 아니라 Cancel
a CanBeCanceled
및 IsCancellationRequested
속성을 노출할 수 있습니다.IsRunning
작업이 완료되는 시기를 확인하는 데 사용할 수 있는 속성을 노출 ExecutionTask
합니다. 이는 표시기 로드와 같은 UI 요소에 명령을 바인딩하는 데 특히 유용합니다.IAsyncRelayCommand<T>
인터페이스를 구현 IAsyncRelayCommand
합니다. 예를 들어 필요한 경우 명령을 동일한 공용 API 표면을 노출하는 사용자 지정 구현으로 쉽게 바꿀 수 있습니다.샘플에 RelayCommand
설명된 시나리오와 비슷하지만 비동기 작업을 실행하는 명령을 생각해 보겠습니다.
public class MyViewModel : ObservableObject
{
public MyViewModel()
{
DownloadTextCommand = new AsyncRelayCommand(DownloadText);
}
public IAsyncRelayCommand DownloadTextCommand { get; }
private Task<string> DownloadText()
{
return WebService.LoadMyTextAsync();
}
}
관련 UI 코드 사용:
<Page
x:Class="MyApp.Views.MyPage"
xmlns:viewModels="using:MyApp.ViewModels"
xmlns:converters="using:Microsoft.Toolkit.Uwp.UI.Converters">
<Page.DataContext>
<viewModels:MyViewModel x:Name="ViewModel"/>
</Page.DataContext>
<Page.Resources>
<converters:TaskResultConverter x:Key="TaskResultConverter"/>
</Page.Resources>
<StackPanel Spacing="8" xml:space="default">
<TextBlock>
<Run Text="Task status:"/>
<Run Text="{x:Bind ViewModel.DownloadTextCommand.ExecutionTask.Status, Mode=OneWay}"/>
<LineBreak/>
<Run Text="Result:"/>
<Run Text="{x:Bind ViewModel.DownloadTextCommand.ExecutionTask, Converter={StaticResource TaskResultConverter}, Mode=OneWay}"/>
</TextBlock>
<Button
Content="Click me!"
Command="{x:Bind ViewModel.DownloadTextCommand}"/>
<ProgressRing
HorizontalAlignment="Left"
IsActive="{x:Bind ViewModel.DownloadTextCommand.IsRunning, Mode=OneWay}"/>
</StackPanel>
</Page>
클릭하면 Button
명령이 호출되고 ExecutionTask
업데이트됩니다. 작업이 완료되면 속성은 UI에 반영되는 알림을 발생합니다. 이 경우 작업 상태와 작업의 현재 결과가 모두 표시됩니다. 작업의 결과를 표시하려면 메서드를 사용해야 TaskExtensions.GetResultOrDefault
합니다. 이렇게 하면 스레드를 차단하지 않고(교착 상태가 발생할 수 있음) 아직 완료되지 않은 작업의 결과에 액세스할 수 있습니다.
MVVM Toolkit 피드백
MVVM Toolkit은(는) 오픈 소스 프로젝트입니다. 다음 링크를 선택하여 피드백을 제공해 주세요.
학습
모듈
Common command bar scenarios - Training
Explore customization of command bars in Power Apps using Power Fx logic, enhancing user experience and meeting unique requirements.