【问题标题】:Add to favorites in windows phone添加到 Windows Phone 中的收藏夹
【发布时间】:2017-03-11 10:57:48
【问题描述】:

我的应用中有一个文本块,它将根据用户的喜好显示不同的文本。

我希望用户能够保存他们最喜欢的文本,这些文本将在单击按钮后保存。稍后,保存的收藏文本列表将作为选择选项显示。有没有人知道如何创建这个过程?请提供代码示例。

文本块:

<TextBlock x:Name="StringTextBlock" Text="" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}" />

按钮:

<Button Grid.Row="2" x:Name="AddToFavoritesButton" 
        Content="Add" Style="{StaticResource ButtonStyle2}" Margin="2"
        Click="AddToFavoritesButton_Click"/>

C#

private void AddToFavoritesButton_Click(object sender, RoutedEventArgs e)
{
}

和另一个页面上的列表框,稍后点击收藏按钮即可访问

<ListBox x:Name="FavoriteListBox" />

我想知道如何将文本块中的当前文本添加到收藏文本列表中。或者,另一种添加到收藏文本列表的方法。

【问题讨论】:

    标签: c# visual-studio-2015 windows-phone-8.1 windows-phone-silverlight


    【解决方案1】:

    这在很大程度上取决于您是想为应用程序的运行会话还是多次启动存储“收藏夹”。

    如果您只是想暂时存储它们,您可以创建一个为收藏夹保存List&lt;string&gt; 的类,然后在“其他页面”上将它们加载到ObservableCollection&lt;string&gt; 中并使用数据绑定来显示它们。数据绑定的介绍在这里 - https://msdn.microsoft.com/en-us/windows/uwp/data-binding/data-binding-quickstart

    要保存收藏夹,您需要将它们保存在某个地方,最好是保存在文件中。最简单的方法是在ApplicationData.Current.LocalFolder 中创建一个文件并将数据序列化为其内容,并在下一次应用程序启动时重新加载它们。一个很好的处理 JSON 文件的序列化库是 JSON.NET。将数据序列化为 JSON 字符串并返回非常容易。然后,您可以使用FileIO.WriteTextAsync()FileIO.ReadTextAsync() 方法在文件中写入和读取数据。

    简单示例

    在第一页上,您可以有一个TextBox 和一个Button。当用户在TextBox 中输入内容并单击Button 时,您可以执行以下操作:

    FavoritesManager.AddAsync( inputBox.Text );
    

    FavoritesManager 类大致如下所示:

    public static class FavoritesManager
    {
        List<string> _favorites = null;
    
        public static async Task LoadFromStorageAsync()
        {
            _favorites = 
                JsonConvert.DeserializeObject<List<string>>( 
                    await FileIO.ReadAllTextAsync( "somefile.txt" ) );
        }
    
        public static async Task AddAsync( string text )
        {
            _favorites.Add( text );
            await FileIO.WriteAllTextAsync( "somefile.txt",
               JsonConvert.SerializeObject( _favorites ) );                    
        }
    
        public static IEnumerable<string> GetFavorites()
        {
           return _favorites;
        }
    }
    

    在尝试获取收藏夹之前,您必须调用LoadFromStorageAsync 方法,以便它们在_favorites 列表中准备就绪。

    在第二页上,您只需调用GetFavorites 来检索收藏夹,然后将它们存储在ObservableCollection&lt;string&gt; 中并使用数据绑定将它们绑定到列表控件:-)。

    【讨论】:

    • 很高兴再次见到你@MZetko,我想将它存储起来,直到用户想要手动删除它,你有任何样本可以做到这一点吗?了解全流程
    • 您好,抱歉耽搁了。我认为您应该阅读这两个主题,否则将需要我自己编写整个代码:-)。
    • 但是当你遇到困难时我会帮助你:-)。我已经用一个小“示例”更新了答案,但它只是一个草稿:-)。
    • 嗨,你遇到了什么错误?您是否将 JSON.NET 块包添加到您的项目中?
    • 我的意思是当您将鼠标光标悬停在红线上方时会显示什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多