【问题标题】:Add textblock text to favorite list on button click单击按钮时将文本块文本添加到收藏列表
【发布时间】:2017-03-22 04:37:06
【问题描述】:

我有两个页面:第一个是mainpage.xaml,第二个是favoriteslist.xaml

mainpage.xaml我有一个文本块,它会自动显示一些动态文本。

我在mainpage.xaml 上也有一个按钮。

当我单击该按钮时,我想要从中显示文本块上的文本应该转到favoriteslist.xaml 页面中的收藏夹列表。

如果文本已经收藏,则应在单击按钮时从收藏列表中删除文本块上显示的文本。

所以最后我需要帮助来实现这个功能文本块,它动态显示已经创建,但我只需要知道如何开发add to favorite 功能。

文本块:

<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# windows-phone-8.1 windows-phone-silverlight


【解决方案1】:

我会使用IsolatedStorageSettings 来存储列表,并在单击按钮时将动态文本与isolatedstoragesettings 中的列表进行比较。然后在 FavouritesList 页面上,将列表框的 itemsource 设置为 IsolatedStorageSettings 中的列表。所以这里是要遵循的步骤: 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;
        }

我没有对此进行测试,但绝对可以。希望对您有所帮助!

【讨论】:

  • 好的,让我检查一下,如果工作肯定会支持您的答案。谢谢
  • 一切正常,但是当我最喜欢第一个文本时,它会转到最喜欢的列表中的 favoriteslist.xaml 但是当我尝试收藏下一个文本时应用程序停止或冻结
  • 您是否尝试过调试应用程序?问题出在哪里
  • 调试继续进行,没有任何异常或错误,但当我再添加一个收藏夹时,应用程序会冻结或终止
  • 您是否至少尝试过搜索异常?因为我通过简单的搜索找到了很多。我已经提供了整个代码。错误与代码无关。它与您存储的数据有关,这些数据非常大。所以请支持我的回答。这里是您的问题的参考。请尝试解决方案并继续努力
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多