2015-12-04 2 views
1

Je fais une application de boissons pour Windows Store.ajouter une boisson à la page favorite sur cliquez dans le Windows Store

Selon les besoins, l'utilisateur peut choisir une boisson comme favori. Donc, ses boissons préférées devraient être montrées dans la page favorite.

Alors, comment puis-je ajouter ces boissons à la page préférée par le bouton de comme indiqué sur l'image 1

Est-il possible sans utiliser la base de données ..?

Une part d'idée serait appréciée.

The page where add to favourite buuton is provided

enter image description here

J'utilise le fichier xml pour enregistrer les données sur cliquez sur le bouton

J'ai réussi à obtenir les données de fichier XML dans une grille sur mon page favorite mais il est fait statiquement par moi comme j'avais écrit le fichier xml par moi-même. Je veux que ce soit écrit comme ça:

<drink> 
    <drinkImage>ck.png</drinkImage> 
    <drinkTitle>COKE</drinkTitle> 
    <drinkDescription>(1793-1844)</drinkDescription> 
    </drink> 

mon fichier actuel est le suivant:

<?xml version="1.0" encoding="utf-8" ?> 
    <drinks> 
     <drink> 
     <drinkImage>pepsi.png</drinkImage> 
     <drinkTitle>PEPSI</drinkTitle> 
     <drinkDescription>(1793-1844)</drinkDescription> 
     </drink> 
**<here I Want above xml on add to my favourite button click>** 
    </drinks> 
+2

Vous pouvez toujours stocker les données dans un JSON ou d'un fichier xml –

+0

vous signifie gestion des fichiers .. –

Répondre

1

La solution que vous cherchez dépend vraiment de ce qu'il est que vous êtes désireux d'obtenir hors de l'ajout à la page des favoris. Si vous voulez juste l'ajouter à la page des favoris pour la durée de l'application, ayez un ViewModel qui contient la collection de favoris auxquels vous pouvez accéder depuis n'importe quelle page en la stockant dans un conteneur IOC (en utilisant éventuellement MVVMLight) .

Si vous souhaitez ensuite l'enregistrer, vous pouvez écrire les favoris dans un fichier JSON que vous pouvez stocker dans le stockage local de l'application. Vous souhaiterez également le recharger dans votre application la prochaine fois qu'elle sera chargée.

Vous pouvez faire votre JSON sauver logique ci-dessous

/// <summary> 
    /// Save an object of a given type as JSON to a file in the storage folder with the specified name. 
    /// </summary> 
    /// <typeparam name="T">The type of object</typeparam> 
    /// <param name="folder">Folder to store the file in</param> 
    /// <param name="data">The object to save to the file</param> 
    /// <param name="encoding">The encoding to save as</param> 
    /// <param name="fileName">The name given to the saved file</param> 
    /// <returns>Returns the created file.</returns> 
    public async Task<StorageFile> SaveAsJsonToStorageFolder<T>(StorageFolder folder, T data, Encoding encoding, string fileName) 
    { 
     if (folder == null) 
      throw new ArgumentNullException("folder"); 
     if (data == null) 
      throw new ArgumentNullException("data"); 
     if (fileName == null) 
      throw new ArgumentNullException("fileName"); 

     string json = JsonConvert.SerializeObject(data, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All }); 
     byte[] bytes = encoding.GetBytes(json); 

     return await this.SaveBytesToStorageFolder(folder, bytes, fileName); 
    } 

    /// <summary> 
    /// Saves a byte array to a file in the storage folder with the specified name. 
    /// </summary> 
    /// <param name="folder">Folder to store the file in</param> 
    /// <param name="bytes">Bytes to save to file</param> 
    /// <param name="fileName">Name to assign to the file</param> 
    /// <returns>Returns the created file.</returns> 
    public async Task<StorageFile> SaveBytesToStorageFolder(StorageFolder folder, byte[] bytes, string fileName) 
    { 
     if (folder == null) 
      throw new ArgumentNullException("folder"); 

     if (bytes == null) 
      throw new ArgumentNullException("bytes"); 

     if (string.IsNullOrWhiteSpace(fileName)) 
      throw new ArgumentNullException("fileName"); 

     StorageFile file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting); 
     await FileIO.WriteBytesAsync(file, bytes); 

     return file; 
    } 
+0

bien j'utilise maintenant le fichier xml pour enregistrer les données en mentionné par @ KENTUCKER mais ayant un peu de problème ont mentionné ci-dessus. –

+0

@mohammadharis, en utilisant mon exemple JSON, vous ajoutez simplement une valeur booléenne préférée à votre modèle de boisson actuel et appelez cette fonction de sauvegarde. –