我正在开发一个 PRISM 应用程序,其中我们会钻取数据以获取更多细节信息。 在我的实现中,我采用了嵌套的 MVVM 架构,当我向下导航树时,我想将一个模型传递给我的新视图。
据我所知,目前 PRISM 允许传递字符串,但不允许传递对象。我想知道如何解决这个问题的方法。
我正在开发一个 PRISM 应用程序,其中我们会钻取数据以获取更多细节信息。 在我的实现中,我采用了嵌套的 MVVM 架构,当我向下导航树时,我想将一个模型传递给我的新视图。
据我所知,目前 PRISM 允许传递字符串,但不允许传递对象。我想知道如何解决这个问题的方法。
public class MyViewModel : INavigationAware
{ ...
void INavigationAware.OnNavigatedFrom(NavigationContext navigationContext)
{
SharedData data = new SharedData();
...
navigationContext.NavigationService.Region.Context = data;
}
当你想要接收数据时,在第二个视图模型中添加以下代码片段 -
void INavigationAware.OnNavigatedTo(NavigationContext navigationContext)
{
if (navigationContext.NavigationService.Region.Context != null)
{
if (navigationContext.NavigationService.Region.Context is SharedData)
{
SharedData data = (SharedData)navigationContext.NavigationService.Region.Context;
...
}
}
}
提示:如果这篇文章对您有所帮助,请将其标记为答案。
PRISM支持提供参数:
var para = new NavigationParameters { { "SearchResult", result } };
_regionManager.RequestNavigate(ShellRegions.DockedRight, typeof(UI.SearchResultView).FullName, OnNavigationCompleted, para);
在您的View、ViewModel或两者上实现INavigationAware接口。
您也可以在此处找到详细信息:https://msdn.microsoft.com/en-us/library/gg430861%28v=pandp.40%29.aspx