/// <summary> /// Populates the page with content passed during navigation. Any saved state is also /// provided when recreating a page from a prior session. /// </summary> /// <param name="sender"> /// The source of the event; typically <see cref="NavigationHelper"/> /// </param> /// <param name="e">Event data that provides both the navigation parameter passed to /// <see cref="Frame.Navigate(Type, Object)"/> when this page was initially requested and /// a dictionary of state preserved by this page during an earlier /// session. The state will be null the first time a page is visited.</param> private async void navigationHelper_LoadState(object sender, LoadStateEventArgs e) { item = await RecipeDataSource.GetItemAsync((String)e.NavigationParameter); this.DefaultViewModel["Group"] = item.Group; this.DefaultViewModel["Item"] = item; // Is recipe already pinned? if (SecondaryTile.Exists(item.UniqueId)) btnPinToStart.Icon = new SymbolIcon(Symbol.UnPin); DataTransferManager.GetForCurrentView().DataRequested += OnShareDataRequested; }
private static void CreateRecipesAndRecipeGroups(JsonArray array) { foreach (var item in array) { var obj = item.GetObject(); RecipeDataItem recipe = new RecipeDataItem(); RecipeDataGroup group = null; foreach (var key in obj.Keys) { IJsonValue val; if (!obj.TryGetValue(key, out val)) continue; switch (key) { case "key": recipe.UniqueId = val.GetNumber().ToString(); break; case "title": recipe.Title = val.GetString(); break; case "shortTitle": recipe.ShortTitle = val.GetString(); break; case "preptime": recipe.PrepTime = (int)val.GetNumber(); break; case "directions": recipe.Directions = val.GetString(); break; case "ingredients": var ingredients = val.GetArray(); var list = (from i in ingredients select i.GetString()).ToList(); recipe.Ingredients = new ObservableCollection<string>(list); break; case "backgroundImage": recipe.SetImage(val.GetString()); break; case "tileImage": recipe.SetTileImage(val.GetString()); break; case "group": var recipeGroup = val.GetObject(); IJsonValue groupKey; if (!recipeGroup.TryGetValue("key", out groupKey)) continue; group = _recipeDataSource.AllGroups.FirstOrDefault(c => c.UniqueId.Equals(groupKey.GetString())); if (group == null) group = CreateRecipeGroup(recipeGroup); recipe.Group = group; break; } } if (group != null) group.Items.Add(recipe); } }
private static void CreateRecipesAndRecipeGroups(JsonArray array) { foreach (var item in array) { var obj = item.GetObject(); RecipeDataItem recipe = new RecipeDataItem(); RecipeDataGroup group = null; foreach (var key in obj.Keys) { IJsonValue val; if (!obj.TryGetValue(key, out val)) { continue; } switch (key) { case "key": recipe.UniqueId = val.GetNumber().ToString(); break; case "title": recipe.Title = val.GetString(); break; case "shortTitle": recipe.ShortTitle = val.GetString(); break; case "preptime": recipe.PrepTime = (int)val.GetNumber(); break; case "directions": recipe.Directions = val.GetString(); break; case "ingredients": var ingredients = val.GetArray(); var list = (from i in ingredients select i.GetString()).ToList(); recipe.Ingredients = new ObservableCollection <string>(list); break; case "backgroundImage": recipe.SetImage(val.GetString()); break; case "tileImage": recipe.SetTileImage(val.GetString()); break; case "group": var recipeGroup = val.GetObject(); IJsonValue groupKey; if (!recipeGroup.TryGetValue("key", out groupKey)) { continue; } group = _recipeDataSource.AllGroups.FirstOrDefault(c => c.UniqueId.Equals(groupKey.GetString())); if (group == null) { group = CreateRecipeGroup(recipeGroup); } recipe.Group = group; break; } } if (group != null) { group.Items.Add(recipe); } } }