Wie wird eine XAML-Definition in eine Objektinstanz eingeschaltet?
Frage
XAML können Sie einen Attributwert unter Verwendung einer Zeichenfolge angeben, die geschweiften Klammern enthält. Hier ist ein Beispiel, das eine schafft Bindung Instanz und weist sie den Text Eigenschaft des TextBox -Element.
<TextBox Text="{Binding ElementName=Foo, Path=Bar}"/>
Ich möchte XAML erweitern, so dass der Entwickler diese geben könnte als gültig ...
<TextBox Text="{MyCustomObject Field1=Foo, Field2=Bar}"/>
Dies würde eine Instanz meiner Klasse erstellen und die Field1 / Field2 Eigenschaften entsprechend eingestellt. Ist das möglich? Wenn ja, wie Sie es tun?
Wenn dies möglich ist, ich habe eine Followup Frage. Kann ich einen String nehmen "{Binding Elementnamen = Foo, Path = Bar}" und den Rahmen bitten, es zu verarbeiten und das Rück die Die Bindung Instanz spezifiziert? Dies muss irgendwo bereits getan werden, um die oben XAML Arbeit zu machen und so muss es eine Möglichkeit zu fragen, für die gleiche Sache verarbeitet werden.
Lösung
einen Blick auf markupextensions http://blogs.msdn.com/ wpfsdk / Archiv / 2007/03/22 / Blogpost-text-creatingasimplecustommarkupextension.aspx
Andere Tipps
Die Binding
Klasse ist eine Markup Erweiterung . Sie können Ihre eigenen durch Ableiten von System.Windows.Markup.MarkupExtension
schreiben.
ElementName
und Path
sind einfach Objekte auf dem Binding
Objekt.
Wie für die Followup können Sie einen neuen Binding
in Code erstellen, indem Sie das Binding
Objekt zu erhalten. Ich weiß nicht, von einer Art und Weise eine Schnur durch zu verarbeiten.