将ObservableCollection保存到文件(.txt)

时间:2011-06-24 14:10:55

标签: c# .net wpf save observablecollection

对我来说,最好的方法是将我在listview中显示的observableCollection数据保存到文件(.txt)中。当我没有observableCollection和下面显示的绑定数据时,我有它工作,为此我只使用了一个字符串生成器。从下面的代码中我如何保存“进程名称”

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>

用于工作的Stringbuilder

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 个答案:

答案 0 :(得分:6)

您可以为ObservableCollection执行类似的foreach循环。

    System.Text.StringBuilder sb = new System.Text.StringBuilder();
    foreach (StatisticsData item in StatisticsCollection)
    {

        sb.AppendLine(item.ToString());

    }

答案 1 :(得分:1)

从你的“_StatisticsCollection”命名我假设你把它保存为一个字段变量?如果是这样,只需迭代它,并将“ProcessName”属性写入文件/ StringBuilder。或者,使用Linq.Enumerable扩展方法“Cast”将项目迭代为“StatisticsData”:foreach(listView1.Items.Cast中的var项)。再次,它是您想要写出的属性“ProcessName”。

答案 2 :(得分:1)

不要使用任何临时变量,这是不必要的。直接写入文件:

using (var writer = new StreamWriter("text.txt"))
{
    foreach (StatisticsData item in StatisticsCollection)
    {
        writer.WriteLine(item.ToString());
    }
}