Lors du réglage de liaison sur un Setter vous n'avez pas besoin BindingOperations du tout. Tout ce que vous devez faire est:
var setter = new Setter(TextBlock.TextProperty, new Binding("FirstName"));
ou équivalente
var setter = new Setter
{
Property = TextBlock.TextProperty,
Value = new Binding("FirstName"),
};
ou l'autre de ces équivaudrait à
<Setter Property="TextBlock.Text" Value="{Binding FirstName}" />
La raison pour laquelle cela fonctionne est que Setter.Value est un CLR ordinaire propriété, pas un DependencyProperty et en tant que tel, il ne peut pas être lié. Il n'y a donc aucune ambiguïté dans le code XAML ou le code lorsque vous stockez un objet Binding dans celui-ci.
Lorsque le Setter est effectivement appliquée à un objet, si une liaison se trouve dans le Setter, l'équivalent de BindingOperations.SetBinding est appelé. Sinon, la propriété est définie directement.
Ah, merci de l'avoir clarifié. Il m'a paru étrange qu'il n'y avait pas ValueProperty dans Setter, mais je n'ai jamais pensé à simplement définir la valeur * à * un objet Binding. :) Cheers Ray - vous m'avez beaucoup aidé ces derniers temps. ;) – devios1