2009-07-16 14 views
4

Je tente de lier un contrôle ListView à un DataTable, mais le système de liaison WPF semble se plaindre du chemin de liaison que je spécifie.Liaison à l'élément actuel (WPF)

À titre d'exemple, un GridViewColumn est défini comme suit:

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

Pour autant que je comprends (et MSN semble me soutenir), en spécifiant Path=/ devrait faire la liaison sur l'élément courant de la collecte des données .

L'erreur que je reçois (dans la fenêtre de trace) est:

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')

Cela me donne l'impression que / est même pas un chemin valide et WPF attend quelque chose après la barre oblique. Si oui, comment pourrais-je me lier à l'élément actuel? Pourquoi ai-je cette erreur en premier lieu?

Répondre

3

Je pense que la confusion est que le DataContext pour le GridViewColumn est pas la collection haut, mais il est déjà l'élément qui est lié à cette colonne, de sorte que vous n'avez pas besoin de spécifier un chemin.

L'heure à laquelle vous pouvez utiliser un chemin comme celui-ci est si DataContext de votre contrôle est une liste et que vous voulez lier à l'élément sélectionné. Un exemple possible serait.

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

@Martin: Oui, c'est exactement de là que vient ma confusion. Je n'ai même pas essayé de quitter le chemin parce que je pensais automatiquement que cela faisait référence à la collection dans son ensemble. Merci pour l'explication complète. – Noldorin

7

Avez-vous essayé d'omettre le paramètre Path?

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

@sixlettervariables: Merci pour votre réponse. Vous avez en effet raison de manquer le paramètre 'Path'. Désolé, mais j'ai dû donner à Martin la réponse pour les détails supplémentaires. – Noldorin