RelayCommand 및 RelayCommand<T>
RelayCommand<T>
ICommand
메서드 RelayCommand
또는 대리자를 뷰에 노출할 수 있는 구현입니다. 이러한 형식은 viewmodel과 UI 요소 간에 명령을 바인딩하는 방법으로 작동합니다.
플랫폼 API:
RelayCommand
,RelayCommand<T>
,IRelayCommand
IRelayCommand<T>
작동 방식
RelayCommand
다음과 RelayCommand<T>
같은 주요 기능이 있습니다.
- 인터페이스의 기본 구현을
ICommand
제공합니다. - 또한 이벤트를 발생시키는 메서드를 노출하는 (및) 인터페이스를 구현
IRelayCommand
합니다NotifyCanExecuteChanged
CanExecuteChanged
.IRelayCommand<T>
- 표준 메서드 및
Func<T>
람다 식의 래핑을 허용하는 대리자 및 같은Action
대리자를 사용하는 생성자를 노출합니다.
작업 중 ICommand
다음은 간단한 명령을 설정하는 방법을 보여줍니다.
public class MyViewModel : ObservableObject
{
public MyViewModel()
{
IncrementCounterCommand = new RelayCommand(IncrementCounter);
}
private int counter;
public int Counter
{
get => counter;
private set => SetProperty(ref counter, value);
}
public ICommand IncrementCounterCommand { get; }
private void IncrementCounter() => Counter++;
}
그런 다음 상대 UI는 (WinUI XAML 사용) 될 수 있습니다.
<Page
x:Class="MyApp.Views.MyPage"
xmlns:viewModels="using:MyApp.ViewModels">
<Page.DataContext>
<viewModels:MyViewModel x:Name="ViewModel"/>
</Page.DataContext>
<StackPanel Spacing="8">
<TextBlock Text="{x:Bind ViewModel.Counter, Mode=OneWay}"/>
<Button
Content="Click me!"
Command="{x:Bind ViewModel.IncrementCounterCommand}"/>
</StackPanel>
</Page>
private Button
IncrementCounter
메서드를 래핑하는 ICommand
viewmodel의 바인딩입니다. 속성 TextBlock
값이 표시되고 속성 값 Counter
이 변경 될 때마다 업데이트됩니다.
예제
- 샘플 앱(여러 UI 프레임워크의 경우)을 확인하여 작동 중인 MVVM 도구 키트를 확인합니다.
- 단위 테스트에서 더 많은 예제를 찾을 수도 있습니다.
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
MVVM Toolkit