WPF: Wie binden Sie die name-Eigenschaft
Kann ich binden, um die name-Eigenschaft?
Dies scheint nicht zu funktionieren:
<TextBlock Name="FordPerfect" Text="{Binding Path=Name, Mode=OneWay}"/>
Mache ich etwas falsch?
Bearbeiten:
Hinzufügen ElementName=FordPerfect"
das Problem gelöst. Was ich nicht verstehe ist, warum nur die Bindung an Name
erforderlich, während andere Eigenschaften nicht.
Hinweis: Bewegt sich die zweite (design -) Problem zu eine andere Frage (wo sollte ich in der ersten Zeit...)
Dank
- Es sollte funktionieren. Haben Sie die DataContext der element/Objekt korrekt? Oder haben Sie es überhaupt?
- Wenn ich eine andere Eigenschaft (z.B. Marge) funktioniert es...
- Hi! Es wurde eine neue Antwort, die möglicherweise eine bessere Passform als das akzeptiert, da, stützt sich auf die Angabe der element-Namen. Mit einem RelativeSource mit einer Art von 'Selbst' erzielt die gleiche Sache, aber sauberer, und in einer mehr wiederverwendbare Art und Weise, wie es kann auch verwendet werden, im Stile sollte es sein müssen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde versuchen, diese :
Diese Weise Ihre TextBlock wird der Zusammenhang der Bindung.
Wenn es nicht funktioniert, beobachten Sie die Ausgabe-Fenster, sollten Sie eine verbindliche Fehler !
hätte man sich leichter getan:
Warum: das Textfeld' DataContext ist nicht automatisch die TextBox selbst. So verbindlich zu
Name
zu binden versucht, umwhateverObjectInDataContext.Name
. Also entweder du DataContext wie vorher:... oder direkt eine Quelle für die Bindung
Das Problem, das Sie haben, ist ein
Binding
verwendet standardmäßig dieDataContext
des Elements es ist verwendet als Quelle. Aber Sie wollen die verbindliche Quelle zu sein, dieTextBlock
element selbst.WPF hat eine Klasse namens
RelativeSource
die, wie der name schon sagt, legt die Quelle relativ zu der Bindung. Eine der Beziehungen, die Sie wählen können, istSelf
die genau das tut, was Sie wollen: legt die Quelle der Bindung zu dem element, das es ist verwendet auf.Hier der code:
Da hast du schon die Quelle mit
RelativeSource
Sie nicht angeben müssenElementName
. Sie brauchen auch nichtMode=OneWay
alsTextBlock.TextProperty
bereits standardmäßig one-way, da es nur bei der Ausgabe.Hoffe, das hilft!