MSDN says,¿La vinculación funciona SOLAMENTE con DependencyProperty?
Cada unión tiene típicamente estos cuatro componentes: un objetivo objeto de enlace, una propiedad de destino, un origen de enlace, y un camino para el valor en el origen de enlace de usar. Por ejemplo, si desea enlazar el contenido de un cuadro de texto a la propiedad Name de un objeto empleado, su objeto de destino es el cuadro de texto, la propiedad de destino es la propiedad Text, el valor a utilizar es Nombre y el objeto de origen es el objeto de empleado .
La propiedad de destino debe ser una propiedad de dependencia.
La cita anterior explica por qué funciona el siguiente código,
<TextBox Text="{Binding EmployeeName}">
Funciona porque texto es una propiedad de dependencia. Hasta este punto, todo está bien!
Mi pregunta es,
si la propiedad de destino debe ser una propiedad de dependencia de Encuadernación a trabajar, entonces ¿cómo funciona el folllowing Setter trabajo? Tenga en cuenta que Valor en Setter NO es una propiedad de dependencia.
<Style TargetType="{x:Type TextBox}">
<Setter Property="Text" Value="{Binding EmployeeName}"/>
</Style>
He una explicación para ello. Pero no estoy seguro si eso es correcto. Déjame explicarlo primero, y luego, ustedes me corrigen si me equivoco. :-)
pienso, ya que el tipo de Valor es objeto, que significa, que puede contener instancias de cualquier tipo. Puede contener una instancia de tipo Binding uniforme. Sin embargo, no puede participar en el proceso de evaluación (o resolución) de la expresión de enlace, ya que no es una propiedad de dependencia. Así que el objeto Style simplemente transfiere este objeto de enlace (que guarda el valor) desde Setter al TextBox como tal, sin evaluar/resolver el valor de enlace. A medida que el organismo tales anterior se convierte en el equivalente a esto:
Text="{Binding EmployeeName}"
Y desde ahora, el texto es una propiedad de dependencia, se puede resolver el valor de encadenamiento. Por lo tanto, parece que el objetivo de la vinculación es Valor, pero en realidad, el texto es el destino de la vinculación.
Es como Setter es un cartero, el valor en sí mismo es bolsa de cartero, instancia de enlace (es decir, lo que vale el valor) es una letra. El cartero (es decir, Setter) entrega la letra (es decir, la instancia de enlace) al destino (es decir, propiedad de texto), sin abrirlo, i.e sin saber qué Mensaje (es decir, Nombre del Empleado) lleva la Carta.
Corrígeme si me equivoco.
¿Realmente funciona? Traté de hacer algo similar con los estilos TreeViewItem, pero no fue así. –
En Silverlight, quiero decir. WPF admite definiciones vinculantes en estilos. –
@Lex Lavnikov ... No me registré en Silverlight recientemente, no recuerdo si utilicé Binding en el estilo de Silverlight. De todos modos, puedes comenzar otro hilo para discutirlo. ¿Qué dices? – Nawaz