2008-12-15 4 views

Répondre

5

Je suis assez sûr que si vous définissez juste la datacontext à nouveau, il rebind

+3

Si vous définissez le contexte de données de la même manière que précédemment, il ne se reconnectera pas. Dans ce cas, réglez-le sur null d'abord, puis sur ce qu'il était avant, pour le forcer à se relier. – Edward

1

Définition de la propriété DataContext devrait provoquer le retirage.

5

Si vous devez effectuer un travail supplémentaire lorsque le DataContext change, vous pouvez utiliser un DependencyProperty personnalisé et le lier à la propriété DataContext. Utilisez DependencyPropertyChangedEventHandler pour savoir quand le point de distribution a été modifié.

Pour une explication plus complète, voir mon article de blog au http://msmvps.com/blogs/theproblemsolver/archive/2008/12/29/how-to-know-when-the-datacontext-changed-in-your-control.aspx.

1

Une autre façon de forcer re-lier, par exemple:

MyDataGrid.SetBinding(DataGrid.ItemsSourceProperty, 
    MyDataGrid.GetBindingExpression(DataGrid.ItemsSourceProperty).ParentBinding); 

Cette méthode pourrait être utilisée pour DataContext aussi bien.