我正在研究一個WPF PRISM應用程序,它具有以下結構(我已簡化以更好地解釋而無需額外的圖層)。我使用Unity作爲我的DI/IOC在視圖之間導航WPF PRISM應用程序
- AppMain - 引導程序
- 桂 - 視圖和視圖模型
- 數據 - 使用EF。
在桂,我有如下看法名稱:
- 首頁
- EmployeesView
- OrdersView
- 報告
我在外殼三個區域。 MainRegion - 主要內容 TopRegion - 導航菜單 BottomRegion - 狀態欄
我使用下面的方法來註冊視圖
IRegion region = _regionManger.Regions[RegionNames.MainRegion];
var mainView = _container.Resolve<Home>();
region.Add(mainView, ViewNames.HomeViewName);
region.Activate(mainView);
第一激活發生在模塊初始化方法頂部區域,主要和底部。
之後,我點擊按鈕時激活其他視圖。這只是現在的代碼。示例代碼在這裏:
IRegion region = _regionManger.Regions[RegionNames.MainRegion];
var reportView = region.GetView(ViewNames.ReportsViewName);
if (reportView == null)
{
reportView = _container.Resolve<ReportsView>();
region.Add(reportView, ViewNames.ReportsViewName);
region.Activate(reportView);
}
else
{
region.RequestNavigate(ViewNames.ReportsViewName);
}
問題1:如何可以做到這一點還是我做的方式是罰款的任何建議。 頂部菜單包含主頁,員工,訂單,報告按鈕。
在主頁中,我最近將員工在datagrid中的訂單視爲只讀訂單。 我想雙擊導航到OrderView並將選定的訂單傳遞給用戶。 PROBLEM2我不確定在哪裏做導航。
PROBLEM3:的另一個問題是,如果設置RegionMemberLifeTime的keepAlive假,INavigationAware方法不火。如果我沒有將KeepAlive設置爲false,則頁面不會刷新,因爲視圖模型沒有被調用。
我需要頁面刷新時,它是導航到,而不是陳舊,並處理任何確認提示給用戶時,視圖導航離開它。
非常感謝您的幫助。
我上面關於regionamemberlifetime的評論是錯誤的。我認爲我的視圖名稱拼寫錯誤。我也看了棱鏡快速啓動和PRISM的樣品。導航是在視圖模型中完成的。一旦我明白了,我會糾正我的發帖和解決方案。謝謝 – isakavis 2013-02-12 16:18:46