6
votes

WPF DataTemplate et reliure

Je continue ma compréhension de MVVC avec le code de MSDN et J'ai une question.

dans le .xaml, ils ont une liste de commandes affichées à l'écran. xxx

d'ici, je comprends que le DataContext est défini (non montré ici) et il affichera la collection de commandes. Ce que je ne comprends pas, c'est la plaque de commande que vous pouvez voir ci-dessous: xxx

Comment la liaison est-elle créée? Comment ce code indique-t-il de vérifier la commande de la propriété et displayName à partir de l'objet à l'intérieur de la collection? Est-ce de l'itemsSource? Si oui, je ne comprends pas pourquoi ce n'est qu'à {Binding}. Tout le monde peut m'expliquer s'il vous plaît comment le travail de liaison de DataTemplate d'un fichier content?


0 commentaires

3 Réponses :


1
votes

L'itemSource se lie à {la liaison} se lie directement au DataContext de l'itemSControl (qui recherchera la chaîne jusqu'à ce qu'il trouve un fichier DataContext). Dans ce cas, il a été défini dans l'en-têteContentControl

Chaque élément à l'intérieur de l'articleControl aura ensuite son DataContext défini sur un élément de la liste.

Le est réglant le modèle de chaque élément dans la liste, non pour les éléments de Construction. De sorte que {chemin de liaison = commande} et {chemin de liaison = displayName} examinera ces propriétés sur les éléments dans la liste.


5 commentaires

Si elle se lie directement à DataContext, elle doit être liée au contexte de la liste et non à l'élément de la liste?


C'est vrai pour les articlesControl, mais chaque article dans l'élémentControl aura un élément de la liste pour son DataContext.


D'accord, alors utiliser {Binding} recherchera un DataContext dans cette collection?


Je ne comprends pas ce que vous demandez là-bas. {La liaison} par elle-même se liera toujours au DataContext. Donc, si vous êtes à l'intérieur de l'élémentTemplate, il se liera à un élément de la collection.


D'accord, cela ne sonne pas beaucoup évident pour moi que {Binding} se lie au DataContext à l'intérieur de la collection. Pour moi, il a l'air naturel d'aller sur l'actuel DataContext qui est la liste. Mais je comprends maintenant merci.



9
votes

Comme vous l'avez dit, le DataContext est défini sur la classe ViewModel de sorte que le contrôle que vous avez mentionné dans XAML sera en mesure d'accéder aux propriétés publiques de cette vueModel.

Par exemple: P>

 ItemsSource="{Binding}" instead of ItemsSource="{Binding Commands}".


0 commentaires

2
votes

Exemple:

xaml xxx

C # xxx


0 commentaires