也许我的实施方法是错误的,但在这里我的出路:
我目前使用MVVM和Prism开发应用程序,具有登录对话框和多个模块:
<TextField
fullWidth={true}
floatingLabelText="Título"
errorText="¡Ups! No deberías ver este mensaje."
defaultValue={this.state.post.title}
/>
订阅了一个事件:MainWindowViewModel
,用于检查是否必须将模块名称添加到列表视图中; _ea.GetEvent<RegisterMenuItemEvent>().Subscribe(AddMenuItem, true);
,用于检查用户是否具有导航到模块视图的权限; _ea.GetEvent<LoginEvent>().Subscribe(CheckRoles, true);
方法发布一个事件,将模块注册为列表视图项:CheckRoles()
_ea.GetEvent<RegisterMenuItemEvent>().Publish(new MenuItem(null, View, ModuleName, GroupName));
_ea.GetEvent<LoginEvent>().Publish(new LoginInfo(ctxUser.Username, ctx.UserRole.Where(r => r.UserId == ctxUser.Id).Select(r => r.Role.Name).ToList()));
以上所有内容都按照确切的顺序执行。
我的问题是,如何订阅已发布的活动?:
MainWindowView
_ea.GetEvent<MessageEvent>().Publish("Username");
的ViewModel中执行的,但它不起作用。答案 0 :(得分:1)
我的问题是,如何订阅已发布的活动?
你不能。好吧,你确实可以订阅这个活动,但如果你明白我的意思,你就不会获得任何已发布的活动。
因此,如果您希望确保不遗漏任何事件,则需要确保在之前订阅事件任何其他组件发布事件。