моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Составная команда может запускать несколько зарегистрированных в ней команд и выполнять несколько команд одновременно. Бизнес-требования, такие как сохранение всего, могут быть достигнуты.
1. Создайте интерфейс ICompositeCommands и класс реализации CompositeCommands.
Оберните объект CompositeCommand, предоставленный в Prism, в интерфейс ICompositeCommands и класс реализации ApplicationCommands.
public interface IApplicationCommands
{
CompositeCommand SaveCommand { get; }
}
public class ApplicationCommands : IApplicationCommands
{
private CompositeCommand _saveCommand = new CompositeCommand();
public CompositeCommand SaveCommand
{
get { return _saveCommand; }
}
}
2. Зарегистрируйте составные команды в IOC.
Выполните регистрацию IOC в фоновом коде App.xaml.
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterSingleton<IApplicationCommands, ApplicationCommands>();
}
3. Определите составные команды в ViewModel.
Определите составную команду в ViewModel и привяжите ее к слою представления.
ViewModel:
private IApplicationCommands _applicationCommands;
public IApplicationCommands ApplicationCommands
{
get { return _applicationCommands; }
set { SetProperty(ref _applicationCommands, value); }
}
public MainWindowViewModel(IApplicationCommands applicationCommands)
{
ApplicationCommands = applicationCommands;
}
Вид:
<Button Content="Save" Margin="10" Command="{Binding ApplicationCommands.SaveCommand}"/>
4. Зарегистрируйте составную команду с помощью команд в нескольких других местах.
public TabViewModel(IApplicationCommands applicationCommands)
{
_applicationCommands = applicationCommands;
UpdateCommand = new DelegateCommand(Update).ObservesCanExecute(() => CanUpdate);
_applicationCommands.SaveCommand.RegisterCommand(UpdateCommand);
}
private void Update()
{
UpdateText = $"Updated: {DateTime.Now}";
}
Таким образом, при запуске составной команды ApplicationCommands.SaveCommand будут запущены все зарегистрированные команды.