欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > WPF Prism框架 Composite Commands 复合命令

WPF Prism框架 Composite Commands 复合命令

2024/10/24 6:36:08 来源:https://blog.csdn.net/qq_44967213/article/details/140322593  浏览:    关键词:WPF Prism框架 Composite Commands 复合命令

目的

复合命令可以触发多个与之注册的命令,可以实现一次执行多个命令。可以实现类似全部保存这种业务需求。

实现

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中定义复合命令,并将该命令绑定到View层
ViewModel:

  private IApplicationCommands _applicationCommands;public IApplicationCommands ApplicationCommands{get { return _applicationCommands; }set { SetProperty(ref _applicationCommands, value); }}public MainWindowViewModel(IApplicationCommands applicationCommands){ApplicationCommands = applicationCommands;}

View:

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

4、将其他多个地方的Command注册该复合命令

 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时,所有注册的命令都会触发。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com