Wenn Sie eine Bindung für einen Setter festlegen, benötigen Sie überhaupt keine BindingOperations. Alles, was Sie tun müssen, ist:
var setter = new Setter(TextBlock.TextProperty, new Binding("FirstName"));
oder
var setter = new Setter
{
Property = TextBlock.TextProperty,
Value = new Binding("FirstName"),
};
äquivalent entweder davon ist dies funktioniert auf
<Setter Property="TextBlock.Text" Value="{Binding FirstName}" />
Der Grund gleichwertig wäre, dass Setter.Value ein gewöhnlicher CLR Eigenschaft, keine DependencyProperty und kann daher nicht gebunden werden. Es gibt also keine Unklarheit in XAML oder Code, wenn Sie ein Binding-Objekt darin speichern.
Wenn der Setter tatsächlich auf ein Objekt angewendet wird und eine Bindung im Setter gefunden wird, wird das Äquivalent von BindingOperations.SetBinding aufgerufen. Andernfalls wird die Eigenschaft direkt festgelegt.
Ah, danke, dass du das geklärt hast. Es erschien mir seltsam, dass es in Setter keine ValueProperty gab, aber ich habe nie daran gedacht, den Wert * auf * ein Binding-Objekt zu setzen. :) Cheers Ray - du hast mir in letzter Zeit sehr geholfen. ;) – devios1