Prism 应用系列(五) prism 架构中,如何将对象从一个ViewModel(或View)传递给另一个ViewModel(View)

本文介绍了Prism框架中三种将对象从一个ViewModel传递到另一个ViewModel的方法:1) 使用Notification通知,适用于弹出窗口场景;2) 利用IEventAggregator事件聚合,适合不弹窗且需传递参数的情况;3) RequestNavigate导航,可用于页面跳转并传递多个对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Notification通知(方法1)

这种方法适合应用在弹出窗口,然后在通知中放置Content,然后在 public INotification Notification将该Content拿出来保存。

比如下面,我要将Content保存集合pipList中。

1、先放置数据集合SelectedMorePersons:

              SenduNotification senduNotification = new SenduNotification();
                senduNotification.Title = "编辑";
                senduNotification.Content = SelectedMorePersons;

                //弹出窗口
                SenduNotificationRequest.Raise(senduNotification, returned =>
                {
                    if (returned != null && returned.Confirmed)
                    {
                        //更新数据库
              
Prism(Unity/DryIoc变体)框架,为了将一个非启动窗口的View(视图)和ViewModel(视图模型)关联起来,你需要在IoC容器进行配置。这里以DryIoc为例,你可以按照以下步骤操作: 1. 首先,确保你已经创建了IoC容器并设置了它。如果你使用的是DryIoc,可以使用`ContainerBuilder`初始化容器。 ```csharp using DryIoc; var container = new ContainerBuilder(); ``` 2. 然后,你需要创建一个策略来处理ViewViewModel的绑定。在DryIoc,你可以自定义一个`RegisterWithView`方法,它通常会接收一个依赖注入规则(IDependencyRegistration),并在适当的时候将ViewModelView关联起来。 ```csharp container.RegisterWithView((reg) => reg的生活周期管理策略(Lifetime.Singleton) .OnResolve(viewType => viewModelType, (view, viewModel) => { // 这里viewType是你View的类型,viewModelType是对应ViewModel的类型 view.DataContext = viewModel; })); ``` 3. 接下来,在你的应用程序启动阶段,通过`container.Build()`来构建容器,并确保你在注册ViewModel和对应的View时,使用这个自定义的`RegisterWithView`策略。 4. 当需要显示某个非启动窗口时,你可以从IoC容器获取ViewViewModel实例: ```csharp var viewType = typeof(MyWindowView); var viewModelType = typeof(MyWindowViewModel); var viewModel = container.Resolve(viewModelType); var view = container.Resolve(viewType); // 如果需要,还可以通过viewType和注册策略找到已关联ViewModel var boundViewModel = container.Resolve(viewType).DataContext; // 应该返回对应的ViewModel ``` 这样,每次当你通过IoC容器请求特定View时,都会自动与预先配置好的ViewModel关联
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值