Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
RelayCommand и RelayCommand<T> — это реализации ICommand, которые могут открывать для представления метод или делегат. Эти типы действуют как способ привязки команд между элементами viewmodel и пользовательского интерфейса.
API платформы:
RelayCommand,RelayCommand<T>,IRelayCommandIRelayCommand<T>
Принцип работы
RelayCommand и RelayCommand<T> имеют следующие основные функции:
- Они предоставляют базовую реализацию
ICommandинтерфейса. - Они также реализуют интерфейс
IRelayCommand(иIRelayCommand<T>), который предоставляет методNotifyCanExecuteChangedдля вызова событияCanExecuteChanged. - Они предоставляют конструкторы, принимающие делегаты, как
ActionиFunc<T>, которые позволяют упаковать стандартные методы и лямбда-выражения.
Работа с 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++;
}
И соответствующий интерфейс пользователя может выглядеть так (с использованием 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>
Button привязывается к ICommand в модели представления, которая инкапсулирует приватный метод IncrementCounter.
TextBlock отображает значение свойства Counter и обновляется каждый раз, когда значение свойства изменяется.
Примеры
- Ознакомьтесь с примером приложения (для нескольких платформ пользовательского интерфейса), чтобы просмотреть набор средств MVVM в действии.
- Дополнительные примеры можно найти в модульных тестах.
MVVM Toolkit