コード例 #1
0
 public TaskDetailsViewModel(NavigationTarget target)
 {
     if (target is TaskDetailsTarget)
     {
         LoadData((target as TaskDetailsTarget).TaskId);
     }
     if (target is CommentTarget)
     {
         LoadData((target as CommentTarget).TaskId);
         _selectedComment = Comments.FirstOrDefault(x => x.Id == (target as CommentTarget).CommentId);
     }
 }
コード例 #2
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);
            var url = e.Parameter + "";
            Target = Router.Current.CreateTarget(url);

            if (((Frame)Window.Current.Content).CanGoBack) {
                SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;
            } else {
                SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed;
            }
        }
コード例 #3
0
 public string CreateUrl(NavigationTarget target)
 {
     var route = FindRoute(target);
     var url = Scheme + route.UrlPattern;
     var props = target.GetType().GetPropertiesHierarchical();
     var routeVars = route.Segments.Where(x => x.IsVariable).Select(x => x.Name.ToLowerInvariant());
     foreach (var prop in props) {
         var value = Uri.EscapeDataString(prop.GetValue(target) + "");
         if (routeVars.Contains(prop.Name.ToLowerInvariant())) {
             url = url.Replace("{" + prop.Name.ToLowerInvariant() + "}", value);
         } else if (prop.PropertyType == typeof(string) || prop.PropertyType.GetTypeInfo().IsValueType) {
             url += url.Contains("?") ? "&" : "?";
             url += prop.Name.ToLowerInvariant() + "=" + value;
         }
     }
     return url;
 }
コード例 #4
0
ファイル: Router.cs プロジェクト: modulexcite/SolidNavigation
 public Route FindRoute(NavigationTarget target)
 {
     var route = _routes.FirstOrDefault(x => x.TargetType == target.GetType());
     if (route == null)
     {
         throw new Exception("No route for NavigationTarget: " + target.GetType().Name);
     }
     return route;
 }
コード例 #5
0
 protected override void Navigate(Route route, NavigationTarget target, string uri)
 {
     ContentFrame.Navigate(route.PageType, uri);
 }
コード例 #6
0
 protected override void OnNavigatedTo(NavigationEventArgs e)
 {
     base.OnNavigatedTo(e);
     var url = e.Parameter + "";
     Target = Router.Current.CreateTarget(url);
 }