我正在使用 Prism/Unity 编写 WPF/MVVM 应用程序。在导航区域时,我遇到了如何将数据从一个用户控件传输到另一个用户控件的问题。
我有一个地区
这由仅包含网格的用户控件(“ContactsList”)填充,该网格由 ItemsSource 和 SelectedItem 绑定。
我想导航到 ContractEdit 并将绑定到 SelectedItem 的联系人传递。
LocalRegionManager.RequestNavigate(ContactRegions.MainRegion, ContactsUri.ContactsEdit);
我可以在 Datacontext 或 Uri 中传递单个值,但是当我已经在列表视图模型中拥有整个 Item 时,我不想返回数据库来获取数据。
如何将整个对象从列表用户控件传递到编辑控件?
提前致谢。
结论
我添加了 EventAggregator
public ListViewModel(IEventAggregator eventAggregator, IRegionManager regionManager)
{
_eventAggregator = eventAggregator;
_regionManager = regionManager;
}
在导航时发布了偶数
private void OnSendData()
{
_regionManager.RequestNavigate(ShellRegions.LeftRegion, ModuleAUris.Edit);
_eventAggregator.GetEvent<UserEvent>().Publish(_selectedItem);
}
然后订阅了 even 来获取对象。
public EditViewModel(IEventAggregator eventAggregator, IRegionManager regionManager)
{
_regionManager = regionManager;
_eventAggregator = eventAggregator;
BackCommand = new DelegateCommand(OnBack);
_eventAggregator.GetEvent<UserEvent>().Subscribe((e) => UserEntity = e);
}