Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
RelayCommand, RelayCommand<T> e ICommand são implementações que podem expor um método ou delegado à exibição. Esses tipos atuam como uma maneira de associar comandos entre os elementos viewmodel e de interface do usuário.
APIs de Plataforma:
RelayCommand,RelayCommand<T>,IRelayCommand,IRelayCommand<T>
Como eles funcionam
RelayCommand e RelayCommand<T> têm os seguintes recursos principais:
- Eles fornecem uma implementação base da interface
ICommand. - Eles também implementam a interface
IRelayCommand(eIRelayCommand<T>), que expõe um métodoNotifyCanExecuteChangedpara gerar o eventoCanExecuteChanged. - Eles expõem construtores que levam delegados como
ActioneFunc<T>, que permitem o encapsulamento de métodos padrão e expressões lambda.
Trabalhar com ICommand
O seguinte mostra como configurar um comando simples:
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++;
}
E a interface do usuário relativa poderia ser (usando 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>
O Button se associa ao ICommand no viewmodel, que encapsula o método privado IncrementCounter. O TextBlock exibe o valor da propriedade Counter e é atualizado sempre que o valor da propriedade é alterado.
Exemplos
- Confira o aplicativo de exemplo (para várias estruturas de interface do usuário) para ver o Kit de Ferramentas MVVM em ação.
- Você também pode encontrar mais exemplos nos testes de unidade.