将ObservableCollection保存到文件(.txt)

3

我应该如何将我在ListView中显示的ObservableCollection数据保存到文件(.txt)中呢?当我没有使用ObservableCollection和下面绑定的数据时,我成功地实现了它,只需使用StringBuilder即可。从下面的代码中,我该如何保存“Process name”?

XAML代码

<ListView Height="146"  ScrollBar.Scroll="listView1_Scroll" ItemsSource="{Binding StatisticsCollection}">   <ListView.View>
   <GridView >
      <GridViewColumn Header="Process Name" Width="80" DisplayMemberBinding="{Binding ProcessName}" />
   </GridView>
</Listview.View>

使用的字符串生成器

System.Text.StringBuilder sb = new System.Text.StringBuilder();
foreach (object item in listView1.Items)
{
    sb.AppendLine(item.ToString());
}

声明

 ObservableCollection<StatisticsData> _StatisticsCollection =
    new ObservableCollection<StatisticsData>();

    public ObservableCollection<StatisticsData> StatisticsCollection
    {
        get { return _StatisticsCollection; }
    }

任何反馈都是很好的,谢谢,马丁。
3个回答

6
您可以为您的ObservableCollection执行类似的foreach循环。
    System.Text.StringBuilder sb = new System.Text.StringBuilder();
    foreach (StatisticsData item in StatisticsCollection)
    {

        sb.AppendLine(item.ToString());

    }

打开后我得到的输出是“MemoryMonitor.MainWindow+StatisticsData”。 - carsey88
@carsey88,如果你想将每个项的属性写入文件,请尝试使用item.ProcessName而不是item.ToString() - Bala R
使用的项目.ProcessName.Tostring()。非常感谢,这让我疯了。 - carsey88

1
不要使用任何临时变量,这是不必要的。直接写入文件:
using (var writer = new StreamWriter("text.txt"))
{
    foreach (StatisticsData item in StatisticsCollection)
    {
        writer.WriteLine(item.ToString());
    }
}

1
从你命名为“_StatisticsCollection”的变量来看,我假设你将其保存为字段变量?如果是这样,只需迭代它,然后将“ProcessName”属性写入文件/StringBuilder。或者,使用Linq.Enumerable扩展方法“Cast”将项目作为“StatisticsData”进行迭代:foreach(var item in listView1.Items.Cast)。同样,你想要写出的是“ProcessName”属性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接