Mark's answer montre comment accomplir ce que vous voulez, mais vous avez aussi demandé plus généralement " comment accomplir [liaison à double sens] et ce que cela signifie réellement. " Une liaison unilatérale signifie que la cible de liaison (par exemple, le contrôle) affichera des données provenant de la source de liaison (par exemple objet métier) et se mettra à jour en même temps que l'objet métier, mais les modifications apportées au contrôle ne seront pas propagées Retour à l'objet métier. Par exemple. si le nom Person.Name change de "bob" à "kate", TextBlock.Text lié au nom changera de "bob" à "kate" aussi. La liaison bidirectionnelle signifie simplement que non seulement les modifications de l'objet métier sont répercutées dans l'interface utilisateur, mais que les modifications apportées par l'utilisateur dans l'interface utilisateur sont également propagées à l'objet métier. Donc maintenant, quand l'utilisateur édite le TextBox.Text lié au Name, par exemple en changeant "kate" en "edmund", WPF va aussi mettre la propriété Person.Name à "edmund".
Pour ce faire, définissez simplement Mode = TwoWay dans la déclaration de liaison. Par défaut, certaines propriétés se lient dans les deux sens: TextBox.Text, par exemple, lie TwoWay par défaut, ce qui explique pourquoi le code de Mark n'a pas besoin de la déclaration Mode. En outre, comme le note Mark, par défaut, WPF propage uniquement les modifications à l'objet métier lorsque le contrôle perd le focus. Si vous avez deux éléments d'interface utilisateur liés à la même propriété, cela peut signifier qu'ils apparaissent désynchronisés, auquel cas vous pouvez utiliser UpdateSourceTrigger pour forcer WPF à se propager chaque fois que la propriété change. MSDN couvre cela en détail avec quelques bons diagrammes clairs: voir Data Binding Overview dans le SDK WPF.
En fonction de la façon dont il a configuré les éléments, il se peut que Source doive être remplacé par ElementName (avec un chemin de SelectedItem.Whatever) ou, si l'ensemble d'éléments liés est DataContext, être omis, mais dans ce dernier cas le ListView aura besoin de IsSynchronizedWithCurrentItem = "True". – itowlson
C'est comme dit itowlson. Merci beaucoup! –
Ahh vrai, et merci de corriger la syntaxe;) –