/// <summary> /// アイテム用のページに移動する. /// </summary> /// <param name="reason">理由</param> /// <param name="item">ページに表示する手描きアイテム</param> private void NavigateToItemPage(CanvasPageNavigationReason reason, CanvasItem item) { var nav = new CanvasPageNavigation() { Reason = reason, Item = item, }; this.Frame.Navigate(typeof(CanvasPage), nav.Serialize()); }
/// <summary> /// このページには、移動中に渡されるコンテンツを設定します。前のセッションからページを /// 再作成する場合は、保存状態も指定されます。 /// </summary> /// <param name="navigationParameter">このページが最初に要求されたときに /// <see cref="Frame.Navigate(Type, Object)"/> に渡されたパラメーター値。 /// </param> /// <param name="pageState">前のセッションでこのページによって保存された状態の /// ディクショナリ。ページに初めてアクセスするとき、状態は null になります。</param> protected override async void LoadState(Object navigationParameter, Dictionary <String, Object> pageState) { if (pageState != null) { if (CanvasItemManager.Current.Items.Count == 0) { await CanvasItemManager.Current.LoadAllItemsAsync(); } if ((pageState[PageStateKeyHasNewTraces] as bool?).GetValueOrDefault()) { var msg = new Windows.UI.Popups.MessageDialog(App.CurrentApp.MyResources["MessageCancelItemBecauseTerminated"]); await msg.ShowAsync(); } var item = CanvasItemManager.Current.GetItemByInternalName(pageState[PageStateKeyItemInternalName] as string); if (item == null) { if (CanvasItemManager.Current.Items.Count != 0) { this.Frame.GoBack(); return; } else { item = new CanvasItem(); } } this.MainCanvas.Item = item; if (GetPageStateValue(pageState, PageStateKeyEditMode, false)) { this.MainCanvas.IsEditing = true; } if (GetPageStateValue(pageState, PageStateKeyEditToolPanelIsPinned, false)) { this.editToolPanel_PinButton.IsChecked = true; this.TopAppBar.IsOpen = true; } } else { var nav = new CanvasPageNavigation(); if (!nav.Deserialize(navigationParameter as string)) { this.Frame.GoBack(); return; } this.MainCanvas.Item = nav.Item != null ? nav.Item : new CanvasItem(); if (nav.Reason == CanvasPageNavigationReason.Play) { this.MainCanvas.IsEditing = false; Play(); } else { this.MainCanvas.IsEditing = true; } } }