DataBindingsは初めてです。ファイルのリスト(より正確には、IEnumerable<FileInfo>
)をListView
C#(Visual Studio 2010)のにバインドしようとしています。これが私がやろうとしていることです(私はもっとたくさんの試行をしました、これは投稿するのが最も簡単です):
私のXAMLは次のとおりです(他の場所でリソース/データバインディングが定義されていません):
<ListView
Name="lvInvoices" Height="Auto" HorizontalAlignment="Center" VerticalAlignment="Stretch"
Width="Auto" MinWidth="150" MinHeight="100" Margin="10">
<ListView.View>
<GridView>
<GridViewColumn Header="#" Width="Auto"/>
<GridViewColumn Header="Fichero" Width="Auto" DisplayMemberBinding="{Binding Path=SourceFile}"/>
<GridViewColumn Header="Importe" Width="Auto"/>
</GridView>
</ListView.View>
</ListView>
私の「アイテム」クラスはこれです。PropertyChangedイベントを発生させていないことはわかっていますが、今ではリストにデータを入力したいだけです。
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SPInvoiceLoader
{
public class Invoice : System.ComponentModel.INotifyPropertyChanged
{
public Invoice()
{
}
public Invoice(FileInfo srcFile)
{
this.SourceFile = srcFile;
}
public FileInfo SourceFile { get; private set; }
public int SpId { get; set; }
public Decimal Amount { get; set; }
public string Nif { get; set; }
public bool Signed { get; set; }
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
}
}
また、DataContextが設定されているコードは次のとおりです。
IEnumerable<FileInfo> pdfFiles = dir.EnumerateFiles("*.pdf");
pdfFiles = pdfFiles.OrderBy(f => f.Name);
ObservableCollection<Invoice> coll = new ObservableCollection<Invoice>();
foreach (FileInfo pdfFile in pdfFiles)
{
coll.Add(new Invoice(pdfFile));
}
this.lvInvoices.DataContext = coll;
ローカル変数とインスタンスメンバーの両方として設定しようとしpdfFiles
ましたが、どちらの方法でも機能しません。
その結果、アイテムはまったく更新されず、リストは空のままになります。
なにか提案を?私はこれでかなり新しいので、愚かな間違いを除外しないでください。
前もって感謝します