Ich habe einen solchen WPF-Bindungscode:
%Vor%Die zweite Behauptung schlägt fehl! Das erscheint mir seltsam.
Außerdem habe ich 'OneWayToSource' anstelle von 'OneWay' versucht und alles funktioniert wie erwartet.
%Vor%Weitere Details:
%Vor%Was ist falsch an meinem Code?
Einstellung target.Attribute="foo"; hat die Bindung gelöscht.
MSDN:
Nicht nur dynamische Ressourcen und Bindungen arbeiten gleichzeitig Vorrang als lokaler Wert, sie sind wirklich ein lokaler Wert, aber mit einem Wert, der zurückgestellt wird. Ein Folge davon ist, dass wenn Sie eine dynamische Ressource oder Bindung haben Platz für einen Eigenschaftswert, irgendeinen lokalen Wert, den Sie anschließend festlegen ersetzt die dynamische Bindung oder verbindlich vollständig. Selbst wenn du anrufst ClearValue zum Löschen der lokal gesetzten Wert, die dynamische Ressource oder Bindung wird nicht wiederhergestellt. In der Tat, wenn Sie Rufen Sie ClearValue für eine Eigenschaft auf, die eine dynamische Ressource oder Bindung an Ort und Stelle (ohne "wörtlichen" lokalen Wert), sie werden durch den ClearValue-Aufruf gelöscht auch.
Ich bin kein bindender Experte, aber ich glaube, dass Sie in eine WPF-Abhängigkeitsproperty-Abhängigkeit geraten. Es ist wahrscheinlich, dass das Festlegen des Werts direkt Vorrang vor dem Bindungswert hat. Deshalb überschreibt es die Bindung.
Hier finden Sie eine vollständige Auflistung der Abhängigkeitseigenschaften: Ссылка
Beispiel: TextProperty ist "Text" Abhängigkeitseigenschaft von TextBox. Rufen Sie diese in Code auf:
TextBox1.TextProperty="Wert";
WPF-Eigenschaften können auf zwei Arten festgelegt werden: durch Aufrufen der DependencyObject.SetValue-Methode (zB instance.SetValue (TextProperty, "Irgendein Text")) oder mit CLR Wrapper (zB. instance.Text="ein bisschen Text").
TextBox.TextProperty ist ein statisches DependencyProperty-Objekt, sodass Sie einem Referenztyp keinen String-Wert zuweisen können.
Wenn Sie Binding Mode auf OneWay setzen, bedeutet dies, dass die Bindung nur auf eine Weise funktioniert: Das Ziel wird aktualisiert, wenn sich die Quelle ändert.
Aber das Ziel muss eine Abhängigkeitseigenschaft sein, und der Code, den Sie haben, ist eine CLR .NET-Eigenschaft. Sie sollten den Wert für das Ziel mithilfe des registrierten Abhängigkeitseigenschaftsnamens und nicht nur eines normalen .NET-Eigenschaftsnamens festlegen. Die Antwort von Jared ist völlig richtig. Dies könnte Verwirrung bei der Konfliktlösung zwischen der WPF-Abhängigkeitseigenschaft und der normalen .NET CLR-Eigenschaft verursachen.
Wenn Sie der Konvention folgen, sollte die Abhängigkeitseigenschaft die Form "propertyname" + property haben.
Beispiel: TextProperty ist die "Text" -Abhängigkeitseigenschaft von TextBox. Rufen Sie diese in Code auf:
%Vor%Weitere Informationen zum Festlegen der Bindungsquelle finden Sie unter