En una aplicación de la mina (esto tiene que ver con la navegación muy dinámico y la presentación de contenidos) Tengo que usar esta construcción en XAML:Fenómeno de enlazado de datos en WPF (vinculante para un FrameworkElement): ¿alguna idea de por qué?
<ContentControl Content={Binding ContentElement} />
Hasta ahora, todo bien. Esto es genial, absolutamente genial. Puedo alojar cosas arbitrarias por todo el lugar.
Pero no parece ser un extraño, así, vamos a llamarlo "fenómeno" en WPF (creo que es en el BindingMarkupExtension, pero no está seguro todavía):
Cuando mi propiedad ContentElement se ve así:
public FrameworkElement ContentElement
{
get
{
return this.m_ContentElement;
}
}
luego el getter se llama DOS VECES (!!!) para cada operación de enlace de datos (esto incluye cuando el usuario cambia el idioma sobre la marcha o recarga el control de alojamiento).
Sin embargo (y esto es lo que realmente está alucinante para mí):
Cuando cambio mi propiedad ContentElement a:
public object ContentElement
{
get
{
return this.m_ContentElement;
}
}
entonces el captador se llama a la vez. En serio, no estoy mintiendo aquí. Es absolutamente reproducible en las aplicaciones más simples, puede intentar, por ejemplo, devolviendo un nuevo "Bloque de texto" (eso es lo que suelo hacer para probar o aprender sobre conceptos más avanzados de WPF).
¿Alguna idea de por qué?
La razón por la que pido es que odio las siguientes consecuencias de la solución:
- yo no pierda la seguridad de tipos en este punto
- Esto puede ser un poco difícil de explicar a los nuevos desarrolladores o excesivamente escéptica chistosos
No puedo reproducir esto aquí. El getter se llama una vez en cualquier caso. –
Puede tener algo que ver con la versión de marco a la que se dirige. ¿Es 3.0, 3.5 o 4? – Will
Sí, olvidé probar eso. No está ahí en 3.5, pero está en 4.0. – StormianRootSolver