2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Ein zusammengesetzter Befehl kann mehrere bei ihm registrierte Befehle auslösen und mehrere Befehle gleichzeitig ausführen. Geschäftsanforderungen wie das Speichern aller Anforderungen können erfüllt werden.
1. Erstellen Sie die ICompositeCommands-Schnittstelle und die CompositeCommands-Implementierungsklasse
Binden Sie das in Prism bereitgestellte CompositeCommand-Objekt in die ICompositeCommands-Schnittstelle und die ApplicationCommands-Implementierungsklasse ein
public interface IApplicationCommands
{
CompositeCommand SaveCommand { get; }
}
public class ApplicationCommands : IApplicationCommands
{
private CompositeCommand _saveCommand = new CompositeCommand();
public CompositeCommand SaveCommand
{
get { return _saveCommand; }
}
}
2. Registrieren Sie zusammengesetzte Befehle im IOC
Führen Sie die IOC-Registrierung im App.xaml-Hintergrundcode durch
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterSingleton<IApplicationCommands, ApplicationCommands>();
}
3. Definieren Sie zusammengesetzte Befehle in ViewModel
Definieren Sie einen zusammengesetzten Befehl in ViewModel und binden Sie den Befehl an die Ansichtsebene
Ansichtsmodell:
private IApplicationCommands _applicationCommands;
public IApplicationCommands ApplicationCommands
{
get { return _applicationCommands; }
set { SetProperty(ref _applicationCommands, value); }
}
public MainWindowViewModel(IApplicationCommands applicationCommands)
{
ApplicationCommands = applicationCommands;
}
Sicht:
<Button Content="Save" Margin="10" Command="{Binding ApplicationCommands.SaveCommand}"/>
4. Registrieren Sie den zusammengesetzten Befehl an mehreren anderen Stellen bei Commands.
public TabViewModel(IApplicationCommands applicationCommands)
{
_applicationCommands = applicationCommands;
UpdateCommand = new DelegateCommand(Update).ObservesCanExecute(() => CanUpdate);
_applicationCommands.SaveCommand.RegisterCommand(UpdateCommand);
}
private void Update()
{
UpdateText = $"Updated: {DateTime.Now}";
}
Auf diese Weise werden beim Auslösen des zusammengesetzten Befehls ApplicationCommands.SaveCommand alle registrierten Befehle ausgelöst.