/// <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="navigationParameter">The parameter value passed to /// <see cref="Frame.Navigate(Type, Object)"/> when this page was initially requested. /// </param> /// <param name="pageState">A dictionary of state preserved by this page during an earlier /// session. This will be null the first time a page is visited.</param> protected override async void LoadState(Object navigationParameter, Dictionary <String, Object> pageState) { var storage = new MenuCardStorage(); MenuCardFactory.Instance.InitMenuCards(new ObservableCollection <MenuCard>(await storage.ReadMenuCardsAsync())); this.DefaultViewModel["Items"] = MenuCardFactory.Instance.Cards; }
/// <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) { this.DefaultViewModel["Commands"] = this; var storage = new MenuCardStorage(); MenuCardRepository.Instance.InitMenuCards(new ObservableCollection <MenuCard>( await storage.ReadMenuCardsAsync())); this.DefaultViewModel["Items"] = MenuCardRepository.Instance.Cards; }
/// <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) { this.DefaultViewModel["Commands"] = this; var storage = new MenuCardStorage(); MenuCardRepository.Instance.InitMenuCards(new ObservableCollection <MenuCard>( await storage.ReadMenuCardsAsync())); cards = MenuCardRepository.Instance.Cards; this.DefaultViewModel["Items"] = cards; DataTransferManager.GetForCurrentView().DataRequested += OnShareDataRequested; }
/// <summary> /// 保留与此页关联的状态,以防挂起应用程序或 /// 从导航缓存中放弃此页。 值必须符合 /// <see cref="SuspensionManager.SessionState"/> 的序列化要求。 /// </summary> ///<param name="sender">事件的来源;通常为 <see cref="NavigationHelper"/></param> ///<param name="e">提供要使用可序列化状态填充的空字典 ///的事件数据。</param> /// // 退出页面时会调用 保存添加的Card private async void navigationHelper_SaveState(object sender, SaveStateEventArgs e) { var mc = new MenuCard { Title = info.Title, Description = info.Description, Image = info.Image, ImagePath = info.ImageFileName }; MenuCardRepository.Instance.Cards.Add(mc); var storage = new MenuCardStorage(); await storage.WriteMenuCardsAsync(MenuCardRepository.Instance.Cards.ToList()); }
/// <summary> /// Preserves state associated with this page in case the application is suspended or the /// page is discarded from the navigation cache. Values must conform to the serialization /// requirements of <see cref="SuspensionManager.SessionState"/>. /// </summary> /// <param name="pageState">An empty dictionary to be populated with serializable state.</param> protected async override void SaveState(Dictionary <String, Object> pageState) { var mc = new MenuCard { Title = info.Title, Description = info.Description, Image = info.Image, ImagePath = info.ImageFileName }; mc.SetDirty(); MenuCardFactory.Instance.Cards.Add(mc); var storage = new MenuCardStorage(); await storage.WriteMenuCardsAsync(MenuCardFactory.Instance.Cards.ToList()); }
private async void OnSave(object sender, RoutedEventArgs e) { var picker = new FileSavePicker(); picker.DefaultFileExtension = ".xml"; picker.SuggestedFileName = string.Format("MenuCard {0}.xml", card.Title); picker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary; picker.FileTypeChoices.Add("XML File", new List <string>() { ".xml" }); StorageFile file = await picker.PickSaveFileAsync(); MenuCardStorage storage = new MenuCardStorage(); await storage.WriteMenuCardToFileAsync(card, file); }
private async void OnUploadImage(object sender, RoutedEventArgs e) { var filePicker = new FileOpenPicker(); filePicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary; filePicker.FileTypeFilter.Add(".jpg"); filePicker.FileTypeFilter.Add(".png"); StorageFile file = await filePicker.PickSingleFileAsync(); if (file == null) { return; } var stream = await file.OpenAsync(FileAccessMode.Read); var image = new BitmapImage(); image.SetSource(stream); image.ImageOpened += async(sender1, e1) => { if (image.PixelHeight > image.PixelWidth) { image.DecodePixelHeight = 900; } else { image.DecodePixelWidth = 900; } stream.Seek(0); var imageStorage = new MenuCardImageStorage(); var storage = new MenuCardStorage(); info.ImageFileName = string.Format("{0}.jpg", Guid.NewGuid().ToString()); await imageStorage.WriteImageAsync(stream, info.ImageFileName); }; image.ImageFailed += (sender1, e1) => { string s = e1.ErrorMessage; }; info.Image = image; }
private async void OnSave() { Contract.Requires <InvalidOperationException>(card != null); var picker = new FileSavePicker(); picker.DefaultFileExtension = ".xml"; picker.SuggestedFileName = string.Format("MenuCard {0}.xml", card.Title); picker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary; picker.FileTypeChoices.Add("XML File", new List <string>() { ".xml" }); StorageFile file = await picker.PickSaveFileAsync(); var storage = new MenuCardStorage(); await storage.WriteMenuCardToFileAsync(card, file); }
private static async Task InitSampleDataAsync() { var storage = new MenuCardStorage(); var imageStorage = new MenuCardImageStorage(); if (await storage.IsRoamingFolderEmpty()) { List <MenuCard> menuCards = MenuCardRepository.GetSampleMenuCards().ToList(); foreach (var card in menuCards) { RandomAccessStreamReference streamRef = RandomAccessStreamReference.CreateFromUri(new Uri(card.ImagePath)); using (IRandomAccessStreamWithContentType stream = await streamRef.OpenReadAsync()) { card.ImagePath = string.Format("{0}.png", Guid.NewGuid()); await imageStorage.WriteImageAsync(stream, card.ImagePath); } } await storage.WriteMenuCardsAsync(menuCards); } }