내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
복합 명령은 등록된 여러 명령을 트리거할 수 있으며 동시에 여러 명령을 실행할 수 있습니다. 모두 저장과 같은 비즈니스 요구 사항을 달성할 수 있습니다.
1. ICompositeCommands 인터페이스 및 CompositeCommands 구현 클래스 생성
Prism에 제공된 CompositeCommand 객체를 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에 복합 명령 등록
App.xaml 배경 코드에서 IOC 등록 수행
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterSingleton<IApplicationCommands, ApplicationCommands>();
}
3. 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가 트리거되면 등록된 모든 명령이 트리거됩니다.