点击在Windows商店中添加饮料到喜欢的页面

时间:2015-12-04 17:49:37

标签: windows-store-apps windows-store

我正在为Windows商店制作饮料应用程序。

根据要求,用户可以选择饮料作为最爱。 所以他最喜欢的饮料应该放在最喜欢的页面上。

那么如何在按钮点击时将这些饮品添加到喜爱的页面,如图像1

所示

是否可以不使用数据库..?

任何想法的分享都会受到赞赏。

The page where add to favourite buuton is provided

enter image description here

我使用xml文件在点击按钮

上保存数据

我已设法从收藏页的网格中的xml文件中获取数据 但是由于我自己编写了xml文件,因此它是静态完成的。 我希望它像这样写:

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

我当前的文件是:

 <?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>

1 个答案:

答案 0 :(得分:1)

您正在寻找的解决方案实际上取决于您想要退出添加到收藏页面的内容。

如果您只想在应用程序期间将其添加到收藏夹页面,请使用ViewModel,其中包含您可以通过将其存储在IOC容器中从任何页面访问的收藏夹集合(可能使用{{3 }})。

如果您想要保存它,可以将收藏夹写入JSON文件,您可以将其存储在应用程序的本地存储中。您还希望在下次加载时将其加载到您的应用中。

您可以按照以下

执行JSON保存逻辑
    /// <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;
    }