2009-07-16 15 views
4

Ich versuche, ein ListView Steuerelement an eine DataTable zu binden, aber das WPF-Bindungssystem scheint sich über den angegebenen Bindungspfad zu beschweren.Bindung an das aktuelle Element (WPF)

Als Beispiel ein GridViewColumn ist wie folgt definiert:

<GridViewColumn Header="ColumnTitle" 
DisplayMemberBinding="{Binding Path=/, 
         Converter={StaticResource myConverter}}"/> 

Soweit ich verstehe (und MSN scheint mich zu unterstützen), Path=/ Angabe sollte die Bindung an das aktuelle Element der Datensammlung .

Der Fehler I (im Trace-Fenster) erhalten ist:

System.Windows.Data Error: 39 : BindingExpression path error: '' property not found on 'current item of collection' ''OrdersRow' (HashCode=680171)'. BindingExpression:Path=/; DataItem='OrdersRow' (HashCode=680171); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')

Dies wird mir den Eindruck, dass / nicht einmal ein gültiger Pfad ist, und WPF ist etwas nach dem Schrägstrich erwartet. Wenn ja, wie würde ich sonst an den aktuellen Gegenstand binden? Warum bekomme ich diesen Fehler überhaupt?

Antwort

3

Ich denke, die Verwirrung ist, dass die Datacontext für die Gridviewcolumn ist nicht die Top-Sammlung, aber es ist bereits das Element, das zu dieser Spalte gebunden ist, so brauchen Sie nicht einen Pfad angeben.

Die Zeit, die Sie einen Pfad wie diesem verwenden können, ist, wenn der DataContext Ihres Steuerelements eine Liste ist und Sie an das ausgewählte Element binden möchten. Ein mögliches Beispiel wäre.

<Combobox DataContext={Binding ColourList} 
      DataSource={Binding} <!--Bind to the datacontext --> 
      ForeColor={Binding/} <!--Bind to the currently selected item 
            in the datacontext --> 
      /> 
+0

@Martin: Ja, genau da kam meine Verwirrung her. Ich habe nicht einmal versucht, den Pfad zu verlassen, weil ich automatisch dachte, dass sich das auf die Sammlung als Ganzes bezieht. Danke für die vollständige Erklärung. – Noldorin

7

Haben Sie versucht, den Path-Parameter wegzulassen?

<GridViewColumn Header="ColumnTitle" 
    DisplayMemberBinding="{Binding Converter={StaticResource myConverter}}"/> 
+0

@ sixlettervariables: Vielen Dank für Ihre Antwort. Sie haben tatsächlich Recht, wenn Sie den Parameter 'Path' nicht finden. Entschuldigung, aber ich musste Martin die Antwort für das zusätzliche Detail geben. – Noldorin