繁体   English   中英

Windows Phone 8.1历史记录

[英]windows phone 8.1 history

我正在创建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>

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

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

请帮助。 对不起,英语不好。

为什么不使用SQLite? SQLite将更有用,更容易

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM