2009-04-27 9 views
7

Necesito actualizar todas las asociaciones en mi UserControl cuando su visibilidad cambie a Visible. Prácticamente todos mis fijaciones están ligados a la propiedad DataContext del control de usuario, así que estoy tratando de actualizar el objetivo de que la unión:Actualice todas las asociaciones en UserControl de inmediato

BindingOperations.GetBindingExpressionBase(this, UserControl.DataContextProperty).UpdateTarget(); 

pero me da null como resultado de GetBindingExpression(..) método y me pregunto si estoy usando esto mal.

Además, ¿hay alguna otra buena manera de actualizar todas las vinculaciones en el control (que utilizan DataContext como fuente).

Respuesta

15

Bueno, usted podría acaba de volver a asignar el DataContext:

var dataContext = DataContext; 
DataContext = null; 
DataContext = dataContext; 

FYI, restablecer la propiedad a su valor (es decir DataContext = DataContext) no funcionará.

+0

¡OMG, eres un genio! ¿Por qué, POR QUÉ no he pensado en esto? Gracias, esto funcionó :) – Alexandra

+2

¿Hay una manera más elegante de hacer esto de WPF? ¿No debería WPF soportar algún tipo de mecanismo de actualización vinculante? – BrettRobi

+2

Lo más lujoso es que sin la segunda línea, la actualización no ocurre. Parece que no importa cómo mezcle la propiedad DataContext, no pasa nada a menos que esté configurado como nulo. Gracias por la respuesta útil. – EFraim

1

Está utilizando el método BindingOperations.GetBindingExpressionBase en la propiedad incorrecta. Debe usarlo en las propiedades que se vinculan a la propiedad DataContext, no a la propiedad DataContext.

Cuestiones relacionadas