我正在研究一個PRISM應用程序,我們深入瞭解數據(以獲取更多詳細信息)。 在我的實現中,我有一個嵌套的MVVM,當我向下導航樹時,我想將模型傳遞給我新創建的視圖。如何在導航到PRISM中的新視圖時傳遞對象4
據我所知,目前PRISM允許傳遞字符串,但不允許傳遞對象。我想知道克服這個問題的方法是什麼。
我正在研究一個PRISM應用程序,我們深入瞭解數據(以獲取更多詳細信息)。 在我的實現中,我有一個嵌套的MVVM,當我向下導航樹時,我想將模型傳遞給我新創建的視圖。如何在導航到PRISM中的新視圖時傳遞對象4
據我所知,目前PRISM允許傳遞字符串,但不允許傳遞對象。我想知道克服這個問題的方法是什麼。
我通常使用一個服務,我註冊的對象我想通過一個GUID傳遞。這些被存儲在散列表中,當在棱鏡中導航時,我將guid作爲參數傳遞,然後可以用它來檢索對象。
希望這對你有意義!
我會使用OnNavigatedTo和OnNavigatedFrom方法使用NavigationContext傳遞對象。
首先獲得來自INavigationAware接口視圖模型 -
public class MyViewModel : INavigationAware
{ ...
然後就可以實現OnNavigatedFrom和設置要通過導航上下文如下對象 -
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;
...
}
}
}
ps。標記爲答案,如果這有幫助。
OnNavigatedFrom僅在您導航到相同區域中的視圖時纔有效。如果你在另一個區域,你可以這樣做:_regionManager.Regions [RegionNames.MainRegion] .Context = new List
PRISM支持提供參數:
var para = new NavigationParameters { { "SearchResult", result } };
_regionManager.RequestNavigate(ShellRegions.DockedRight, typeof(UI.SearchResultView).FullName, OnNavigationCompleted, para);
和執行你的視圖,視圖模型或兩個INavigationAware接口。
你也可以在這裏找到細節:https://msdn.microsoft.com/en-us/library/gg430861%28v=pandp.40%29.aspx
這很有道理。這是一個恥辱PRISM不支持在導航過程中傳遞對象,它會讓生活變得更容易。 – Vitalij 2011-04-11 21:37:43