Comment une définition XAML est-elle transformée en une instance d'objet?
Question
XAML vous permet de spécifier une valeur d'attribut à l'aide d'une chaîne contenant des accolades. Voici un exemple qui crée une instance Binding et l'assigne à la propriété Text de l'élément TextBox .
<TextBox Text="{Binding ElementName=Foo, Path=Bar}"/>
Je souhaite étendre XAML afin que le développeur puisse entrer ceci comme étant valide ...
<TextBox Text="{MyCustomObject Field1=Foo, Field2=Bar}"/>
Ceci créerait une instance de ma classe et définirait les propriétés Field1 / Field2 comme il convient. Est-ce possible? Si oui comment le faites-vous?
Si cela est possible, j'ai une question de suivi. Puis-je prendre une chaîne "{Binding ElementName = Foo, Path = Bar}}" et demander au framework de la traiter et de renvoyer l'instance Binding spécifiée? Cela doit déjà être fait quelque part pour que le XAML ci-dessus fonctionne, il doit donc y avoir un moyen de demander que la même chose soit traitée.
La solution
jetez un coup d'œil à markupextensions http://blogs.msdn.com/ wpfsdk / archive / 2007/03/22 / blogpost-text-creationasimplecustommarkupextension.aspx
Autres conseils
La classe Binding
est une extension de balisage . Vous pouvez écrire le vôtre en dérivant de System.Windows.Markup.MarkupExtension
.
ElementName
et Path
sont simplement des propriétés de l'objet Binding
.
Comme pour le suivi, vous pouvez créer un nouveau code Binding
en instanciant l’objet Binding
. Je ne connais pas de moyen de traiter une chaîne.