Добавить текстовый блок в список избранного по нажатию кнопки
У меня есть две страницы: первая mainpage.xaml
а второй favoriteslist.xaml
,
В mainpage.xaml
У меня есть текстовый блок, который показывает динамический текст автоматически.
И у меня есть кнопка также на mainpage.xaml
,
Из которого я хочу, когда я нажимаю на эту кнопку, текст появляется в текстовом блоке должен перейти в список избранного в favoriteslist.xaml
стр.
Если текст уже избранный, то текст, который появляется в текстовом блоке, должен быть удален из списка избранных при нажатии кнопки.
Итак, наконец, мне нужна помощь для реализации этого функционального текстового блока, который показывает динамически уже созданный, но мне нужно только знать, как разработать add to favorite
функциональность.
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:
<ListBox x:Name="FavoriteListBox" />
1 ответ
Я бы использовал IsolatedStorageSettings для хранения списка и сравнения динамического текста со списком в изолированных хранилищах при нажатии кнопки. Затем на странице FavouritesList задайте в качестве источника источника списка список в IsolatedStorageSettings.So, вот шаги, которые необходимо выполнить: 1. Создайте модель / класс, чтобы установить динамический текст, отображаемый в текстовом блоке.
public class favourites
{
public string myText { get; set; }
}
2. В событии нажатия кнопки на MainPage.xaml.cs сначала установите динамический текст (откуда бы вы его не получали) в текстовый блок, если вам нужно, а затем создайте список и / или сравните
private void AddToFavoritesButton_Click(object sender, RoutedEventArgs e)
{
//your dynamic text set to textblock
StringTextBlock.Text = myDynamicText;
//Set value of your text to member variable of the model/class
favourites f = new favourites();
f.myText = myDynamicText;
IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
/*Check if "FavouritesList" key is present in IsolatedStorageSettings
which means already a list had been added. If yes, retrieve the
list, compare each item with your dynamic text, add or remove
accordingly and replace the new list in IsolatedStorageSettings
with same key. */
if (settings.Contains("FavouritesList"))
{
List<favourites> l = (List<favourites>)settings["FavouritesList"];
for(int i = 0; i <= l.Count()-1; i++)
{
if (l[i].Equals(myDynamicText))
{
l.RemoveAt(i);
settings["FavouritesList"] = l;
}
else
{
l.Add(f);
settings["FavouritesList"] = l;
}
}
}
//If no key in IsolatedStorageSettings means no data has been added
//in list and IsolatedStorageSettings. So add new data
else
{
List<favourites> l = new List<favourites>();
l.Add(f);
settings["FavouritesList"] = l;
}
settings.Save();
}
Теперь все, что осталось, это показать постоянно обновляемый список на странице FavouritesList. Я добавил текстовый блок "NoData", который должен быть виден, когда в списке ничего нет. В противном случае список будет отображаться. В FavouritesList.xaml
<ListBox x:Name="FavoriteListBox" Visibility="Collapsed">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding myText}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<TextBlock Name="NoData"
Text="No Data"
Visibility="Collapsed"
Width="50"
Height="50"/>
В FavouritesList.xaml.cs
IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
if (settings.Contains("FavouritesList"))
{
List<favourites> l = (List<favourites>)settings["FavouritesList"];
if(l.Count!= 0)
{
NoData.Visibility = System.Windows.Visibility.Collapsed;
FavoriteListBox.Visibility = System.Windows.Visibility.Visible;
FavoriteListBox.ItemsSource = l;
}
}
else
{
FavoriteListBox.Visibility = System.Windows.Visibility.Collapsed;
NoData.Visibility = System.Windows.Visibility.Visible;
}
Я не проверял это, но определенно должен работать. Надеюсь, поможет!