【问题标题】:windows phone 8.1 historywindows phone 8.1 历史
【发布时间】:2015-01-27 11:55:46
【问题描述】:

我正在创建一个 windows phone 8.1 应用程序。我正在尝试将单击/点击的项目保存在列表视图中,但我不知道如何。

我正在尝试的代码:

List<string> History = new List<string>();

    private async Task SaveTextFile(string str)
    {
        StorageFolder Folder1 = ApplicationData.Current.LocalFolder;
        StorageFolder Folder2 = await Folder1.CreateFolderAsync("Sample Save", CreationCollisionOption.OpenIfExists);
        StorageFile File1 = await Folder2.CreateFileAsync("History.txt", CreationCollisionOption.ReplaceExisting);
        byte[] data = Encoding.Unicode.GetBytes(str);
        using (var f = await File1.OpenStreamForWriteAsync())
        {
            await f.WriteAsync(data, 0, data.Length);
        }
    }

    private async Task<string> GetTextFile()
    {
        StorageFolder Folder1 = ApplicationData.Current.LocalFolder;
        StorageFolder Folder2 = await Folder1.CreateFolderAsync("Sample Save", CreationCollisionOption.OpenIfExists);
        try
        {
            StorageFile File1 = await Folder2.GetFileAsync("History.txt");
            return (await FileIO.ReadTextAsync(File1));
        }
        catch (Exception)
        {
            return "";
        }
    }

    private async void Refresh_It()
    {
        try
        {
            string Str1 = await GetTextFile();
            TextBox1.Text = Str1;
            string[] Str2 = Str1.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < Str2.Count(); i++)
            {
                History.Add(Str2[i]);
            }

            for (int i = 0; i < ListView1.Items.Count; i++)
            {
                if (History.IndexOf(ListView1.Items[i].ToString()) != -1)
                {
                    ListView1.Items[i] = ListView1.Items[i].ToString() + " Clicked";
                }
            }
        }
        catch (Exception ex)
        {
            Label1.Text = ex.Message;
        }


    }

    private async void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
    {
        for (int i = 0; i < 40; i++)
        {
            ListView1.Items.Add(i.ToString());
        }
        Refresh_It();
    }

    private async void ListView1_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        try
        {
            string selecteds = e.AddedItems.First().ToString();
            History.Add(selecteds);
            string str1 = "";
            for (int i = 0; i < History.Count; i++)
            {
                str1 +=  History[i];
                if (i != (History.Count -1)) { str1 += "/"; }
            }
            await SaveTextFile(str1);
            History.Clear();

        }
        catch (Exception ex)
        {
            Label1.Text = ex.Message;
        }

        Refresh_It();

    }

XML:

       <Grid x:Name="LayoutRoot" Loaded="LayoutRoot_Loaded">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <ListView x:Name="ListView1" Grid.Row="1" Background="White" Foreground="Black" SelectionChanged="ListView1_SelectionChanged"/>
    <ScrollViewer Height="Auto" Grid.Row="0">
        <TextBlock x:Name="Label1"/>
    </ScrollViewer>

</Grid>

在我的代码中,我试图获取历史文件文本并将其拆分以将其放在“历史(字符串列表)”中。它总是在更改选择时在“历史(列表)”中添加一个字符串。但由于某种原因,我的代码无法正常工作,似乎问题出在拆分和检查列表项是否在“历史记录(字符串列表)”中。

如果历史记录中有“24”,我希望我的应用程序在 ListView 中添加一个 ex.“24 Clicked”。我正在加载 pageLoad 中的历史记录以及单击项目时。

请帮忙。抱歉英语不好。

【问题讨论】:

    标签: c# windows visual-studio windows-phone-8.1 history


    【解决方案1】:

    你为什么不使用 SQLite ? SQLite 会更有帮助,也更容易

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-27
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-01
      • 1970-01-01
      相关资源
      最近更新 更多