2013-11-13 2 views
0

У меня есть файл Add.xaml Внутри, у меня есть свой рецепт класс, который хранит мой объект рецепта внутри списка по имени breakfastRecipeнагрузки от file.json

Я затем сохранить список beakfastRecipe внутри breakfast.json файл. (используя методы Deserialize/serialize, которые я нашел у другого участника здесь)

У меня есть несколько текстовых полей, где я пишу имя + компонент, затем я использую кнопку сохранения, которая активирует сериализатор json. Я использовал метод тестирования, чтобы проверить десериализатор, если все работает, и это так. на странице add.xaml, сохранение и загрузка списка объектов работают отлично

У меня есть другая страница breakfastList.xaml, где я хочу использовать longlistselector заселить мою страницу со всеми моими рецептами. Проблема в том, что я не понимаю, как получить доступ к этому файлу breakfast.json, который был создан на другой странице.

Я использовал тот же получить/десериализации, чтобы загрузить мои данные

public async void btnGet_Tap() 
    { 

     StorageFolder localFolder = ApplicationData.Current.LocalFolder; 
     try 
     { 
      // Getting JSON from file if it exists, or file not found exception if it does not 
      StorageFile textFile = await localFolder.GetFileAsync("breakfastList.json"); 

      using (IRandomAccessStream textStream = await textFile.OpenReadAsync()) 
      { 
       // Read text stream 
       using (DataReader textReader = new DataReader(textStream)) 
       { 
        //get size 
        uint textLength = (uint)textStream.Size; 
        await textReader.LoadAsync(textLength); 
        // read it 
        string jsonContents = textReader.ReadString(textLength); 
        // deserialize back to our products! 
        //I only had to change this following line in this function 
        breakfastRecipe = JsonConvert.DeserializeObject<IList<Recipe>>(jsonContents) as List<Recipe>; 
        // and show it 
        //displayProduct(); 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      tester.Text = "error"; 
     } 
    } 

Когда я пишу в конструкторе

breakfastRecipe = новый список(); btnGet_Tap();

На мой взгляд, это я создаю новый список, то btnGet загрузить данные из этого файла .json, которые создали мои add.xaml, но это не работает ...

мой вопрос то как получить доступ к данным на моей «второй странице», которые хранятся в этом .json-файле, который был создан моей первой страницей.

ответ

0

Попробуйте переместить код btnGet_Tap в функцию async, которая возвращает задачу, а затем ждет метод btnGet_Tap(). Затем вы можете позвонить по телефону

Foo().Wait(); 

Если вы хотите подождать, когда звоните в свой конструктор.

public async void btnGet_Tap() 
    { 
     await Foo(); 
    } 

    public async Task Foo() 
    { 
     StorageFolder localFolder = ApplicationData.Current.LocalFolder; 
     try 
     { 
      // Getting JSON from file if it exists, or file not found exception if it does not 
      StorageFile textFile = await localFolder.GetFileAsync("breakfastList.json"); 

      using (IRandomAccessStream textStream = await textFile.OpenReadAsync()) 
      { 
       // Read text stream 
       using (DataReader textReader = new DataReader(textStream)) 
       { 
        //get size 
        uint textLength = (uint)textStream.Size; 
        await textReader.LoadAsync(textLength); 
        // read it 
        string jsonContents = textReader.ReadString(textLength); 
        // deserialize back to our products! 
        //I only had to change this following line in this function 
        breakfastRecipe = JsonConvert.DeserializeObject<IList<Recipe>>(jsonContents) as List<Recipe>; 
        // and show it 
        //displayProduct(); 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      tester.Text = "error"; 
     } 
    } 
+0

это еще не загружает мой файл breakfastList.json, когда я добавить рецепт в список через мою страницу add.xaml, я проверяю с помощью кнопки, выход мой рецепт [0]. Закройте приложение, снова запустите его снова, чтобы добавить этот файл .example.exe, используя мой бутон, список, правильно загруженный из файла .json. Но при использовании того же метода btnGet_Tap внутри breakfastList.xaml это не так. Когда я создаю json-файл в локальной папке через add.xaml, он находится в другом каталоге, а не в файле breakfastList.xaml? – mv740

+0

Каталог не должен оставаться прежним. У вас есть Windows Phone Power Tools? Вы можете использовать его для просмотра файлов в изолированном хранилище. http://wptools.codeplex.com/ – snacky

Смежные вопросы