Como é que uma definição XAML se transformou em uma instância de objeto?
Pergunta
XAML permite que você especifique um valor de atributo usando uma string que contém chaves. Aqui está um exemplo que cria um Ligação instância e atribui ao Texto do TextBox elemento.
<TextBox Text="{Binding ElementName=Foo, Path=Bar}"/>
Eu quero estender XAML para que o desenvolvedor poderia entrar neste como válido ...
<TextBox Text="{MyCustomObject Field1=Foo, Field2=Bar}"/>
Isso criaria uma instância da minha classe e definir as propriedades Field1 / Field2 conforme apropriado. Isso é possível? Se sim, como você faz isso?
Se isto é possível, eu tenho uma pergunta de acompanhamento. Posso tirar uma seqüência de "{Binding ElementName = Foo, Path = Bar}" e pedir o enquadramento para processá-lo e devolver o Ligação instância que especificado? Isso deve ser feito em algum lugar já para fazer a acima trabalho XAML e por isso deve haver uma maneira de pedir a mesma coisa para ser processado.
Solução
dar uma olhada em MarkupExtensions http://blogs.msdn.com/ wpfsdk / Arquivo / 2007/03/22 / blogpost-text-creatingasimplecustommarkupextension.aspx
Outras dicas
A classe Binding
é um marcação de extensão . Você pode escrever seu próprio derivando System.Windows.Markup.MarkupExtension
.
ElementName
e Path
são simplesmente propriedades no objeto Binding
.
Quanto ao acompanhamento você pode criar um novo Binding
em código por instanciar o objeto Binding
. Eu não sei de uma maneira de processar uma seqüência completamente.