首页 > 解决方案 > 文本文件的安全列表并使用 json 读取

问题描述

我试图在 Visual Studio 的列表视图中显示一个列表,该列表首先被序列化,然后被反序列化。一切正常,但我的问题是列表以一种非常奇怪的格式显示,您可以在下图中看到它。

到目前为止,这是我的代码:

        private void SaveButton_Click(object sender, RoutedEventArgs e)
    {

        KalenderClass k1 = new KalenderClass();
        k1.termin = TerminTextbox.Text;
        k1.datum = DatePicker1.Date;
        k1.person = PersonTextbox.Text;
        kList.Add(k1);
        SaveData(kList);
        
    }

    private async void SaveData(List<KalenderClass> kList)
    {
        StorageFolder ordner = ApplicationData.Current.LocalFolder;
        StorageFile datei = await ordner.CreateFileAsync("Kalender.txt", CreationCollisionOption.OpenIfExists);
        await FileIO.WriteTextAsync(datei, JsonConvert.SerializeObject(kList));
        showDialog("Daten wurden in Datei geschrieben");


    }

    private async void ReadButton_Click(object sender, RoutedEventArgs e)
    {
        StorageFolder ordner = Windows.Storage.ApplicationData.Current.LocalFolder;
        string path = ordner.Path;
        StorageFile datei = await ordner.GetFileAsync("Kalender.txt");
        string inhalt = await FileIO.ReadTextAsync(datei);
        var k = JsonConvert.DeserializeObject(inhalt);
        TerminListview.Items.Add(k);
    }

我不想将整个 List k 添加到列表视图中,而只是添加新对象。这是它的显示方式: 截屏

我希望它是一种格式,例如:Termin 1: Date: Person:

我希望你们能帮助我

标签: c#jsonuwp

解决方案


更改 CreationCollisionOption 从:

CreationCollisionOption.OpenIfExists

至:

CreationCollisionOption.ReplaceExisting

或者您可以刷新 SaveButton_Click 方法中的列表,如下所示:

private void SaveButton_Click(object sender, RoutedEventArgs e)
{
    kList = new List<KalenderClass>(); // <== This line will reset the list
    KalenderClass k1 = new KalenderClass();
    k1.termin = TerminTextbox.Text;
    k1.datum = DatePicker1.Date;
    k1.person = PersonTextbox.Text;
    kList.Add(k1);
    SaveData(kList);
}

推荐阅读