Quando si imposta un'associazione su un Setter non è necessario BindingOperations. Tutto quello che dovete fare è:
var setter = new Setter(TextBlock.TextProperty, new Binding("FirstName"));
o equivalentemente
var setter = new Setter
{
Property = TextBlock.TextProperty,
Value = new Binding("FirstName"),
};
uno di questi sarebbe equivalente a
<Setter Property="TextBlock.Text" Value="{Binding FirstName}" />
Il motivo per cui funziona è che Setter.Value è un normale CLR proprietà, non DependencyProperty e come tale non può essere associato. Quindi non c'è ambiguità né nell'XAML né nel codice quando si memorizza un oggetto Binding in esso.
Quando l'incastonatore viene effettivamente applicato a un oggetto, se viene trovato un rilegatura nell'incastonatore, viene chiamato l'equivalente di BindingOperations.SetBinding. In caso contrario, la proprietà viene impostata direttamente.
fonte
2010-06-13 03:39:13
Ah, grazie per averlo chiarito. Mi è sembrato strano che non ci fosse ValueProperty in Setter, ma non ho mai pensato di impostare il valore * su * un oggetto Binding. :) Ciao Cheers - mi hai aiutato molto ultimamente. ;) – devios1