public void AddRoutesbyConvention(IMXConventionBasedController controller) { var controllerConvention = controller.Convention; // add default controller route if (controllerConvention.DefaultActionName != null) { var routeDescription = PatternGenerator.Generate(controllerConvention); NavigationMap.Add(routeDescription.Pattern, controller, routeDescription.DefaultParameters); } // add controller routes for each action foreach (var actionConvention in controllerConvention.ActionConventions) { // within each action, there can be multiple routes - e.g. when default parameter values are available. // we have to be very careful with default parameter values because: // - some people have experienced crashes in some MonoDroid builds near to default parameters // - Windows Phone 7 reflection does not supply access to default values (it supplies null instead) foreach ( var routeDescription in new MXRouteDescriptionSet(PatternGenerator, controllerConvention, actionConvention)) { NavigationMap.Add(routeDescription.Pattern, controller, routeDescription.DefaultParameters); } } }