Technologieaustausch

Zusammengesetzte Befehle des WPF Prism Framework. Zusammengesetzte Befehle

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Zweck

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.

erreichen

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; }
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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>();
}
  • 1
  • 2
  • 3
  • 4

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;
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

Sicht:

 <Button Content="Save" Margin="10" Command="{Binding ApplicationCommands.SaveCommand}"/>
  • 1

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}";
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

Auf diese Weise werden beim Auslösen des zusammengesetzten Befehls ApplicationCommands.SaveCommand alle registrierten Befehle ausgelöst.