Ich habe versucht, meine DataGrid-Spalten an eine Liste zu binden, in der das Element für eine Spalte mithilfe eines Indexers abgerufen werden kann. Der Indexer-Typ ist DateTime.
Ich erstelle die DataGrid-Spalten mit Code und wollte eine Bindung erstellen, um den Wert aus der Liste abzurufen. In XAML würde der Pfad geschrieben werden als:
{ Binding Path=Values[01/01/2011] }
Aber da ich es in Code hinter tun, muss ich den Pfad mit einem PropertyPath, wie so zu definieren:
new Binding{
Path = new PropertyPath("Values[01/01/2011]")
}
Es gibt eine weitere Überladung für den Konstruktor, der einen Pfad und ein Array von Parametern benötigt. Gemäß der Dokumentation die Parameter werden für Indexer verwendet. Aber wenn ich meine Bindung schreibe als
new Binding {
Path = new PropertyPath("Values", new DateTime(2011, 01, 01))
}
die Bindung kann den Pfad nicht auflösen. Na gut, ich behaupte nicht, dass es nach einem Indexer suchen sollte. Aber wenn ich es schreibe als:
neue Bindung{ Pfad = new PropertyPath("Werte[]", new DateTime(2011, 01, 01)) }
dann wird DateTime.MinValue an den Indexer übergeben.
Kann mir jemand erklären, wie ich die PathParameters im Konstruktor verwenden und wie ich an Indexer binden kann, ohne einen ToString auf meinen Wert in den tatsächlichen Pfad zu tun?