Добавить в избранное в Windows Phone
В моем приложении есть текстовый блок, который будет отображать другой текст в соответствии с предпочтениями пользователя.
Я хочу, чтобы пользователь мог сохранить свой любимый текст, который будет сохранен после нажатия кнопки. Позднее список сохраненного избранного текста будет отображаться как опция выбора. Есть ли у кого-нибудь идеи о том, как создать этот процесс? Пожалуйста, предоставьте пример кода.
TextBlock:
<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" />
Я хотел бы знать, как добавить текущий текст из текстового блока в список избранного текста. Или другое средство для добавления в список любимых текстов.
1 ответ
Это во многом зависит от того, хотите ли вы сохранить "избранное" только для текущего сеанса приложения или для нескольких запусков.
Если вы просто хотите временно сохранить их, вы можете создать класс, который будет содержать List<string>
для избранных, а затем на "другой странице" загрузите их в ObservableCollection<string>
и использовать привязку данных для их отображения. Введение в связывание данных здесь - 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<string>
и используйте привязку данных для привязки их к элементу управления списком:-) .