Ejemplo n.º 1
0
        /// <summary>
        /// 带参数导航
        /// </summary>
        /// <typeparam name="T">参数类型</typeparam>
        /// <param name="regionName"></param>
        /// <param name="viewID"></param>
        /// <param name="parameter">参数实体</param>
        public static void Navigate <T>(string regionName, string viewID, T parameter)
        {
            if (!m_RegionNameMapControl.ContainsKey(regionName))
            {
                throw new Exception($"不存在此RegionName {regionName}");
            }
            if (!m_ViewIDMapView.ContainsKey(viewID))
            {
                throw new Exception($"不存在此ViewID {viewID}");
            }

            Type           viewType = m_ViewIDMapView[viewID];
            ContentControl control  = m_RegionNameMapControl[regionName];
            object         view     = Activator.CreateInstance(viewType);

            FrameworkElement fe = view as FrameworkElement;

            if (fe != null)
            {
                INavigationAware <T> aware = fe.DataContext as INavigationAware <T>;
                aware?.GetNavigationParameter(parameter);
            }

            control.Content = view;
        }