2011-06-24 50 views
3

リストビューに表示されたデータのobservableCollectionをファイル(.txt)に保存する最良の方法を教えてください。 observableCollectionとバインディング・データを以下に示すようにしていないときは、私はそれを動作させました。これは単に文字列ビルダーを使用したためです。私は、 "プロセス名"ObservableCollectionをファイル(.txt)に保存する

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; } 
    } 

すべてのフィードバックを仕事に使うのStringBuilderを保存することができますどのように以下のコードから素晴らしいでしょう、

おかげ

マーティン

答えて

6

あなたはあなたのためのObservableCollection同様のforeachループを行うことができます。

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

     sb.AppendLine(item.ToString()); 

    } 
+0

「MemoryMonitor.MainWindow + StatisticsData」を開くと出力が表示されます。 – carsey88

+0

'item.ToString()の代わりに@ carsey88' item.ProcessName'がファイルに書きたい各項目のプロパティであれば試してください。 –

+0

はitem.ProcessName.Tostring()を使用しました。おかげさまで、私を狂ってしまう – carsey88

1

"_StatisticsCollection"という名前から、フィールド変数として保存すると仮定していますか?その場合は、その代わりに反復して、 "ProcessName"プロパティをファイル/ StringBuilderに書き込みます。または、Linq.Enumerable拡張メソッド "Cast"を使用してアイテムを "StatisticsData"として反復処理します。foreach(listView1.Items.Castのvarアイテム)。ここでも、書きたいプロパティ "ProcessName"があります。

1

一時変数は使用しないでください。ファイルに直接書き込み:

using (var writer = new StreamWriter("text.txt")) 
{ 
    foreach (StatisticsData item in StatisticsCollection) 
    { 
     writer.WriteLine(item.ToString()); 
    } 
} 
関連する問題