2012-12-14 2 views

Répondre

7

Ce n'est pas si simple en fait, vous n'aurez pas de réponse claire à cette question. Ça dépend du contexte.

Voici deux exemples simples:

Si la propriété limitée appartient à un contrôle WPF qui ne sont pas dans un ControlTemplate, pour la première fois la liaison sera très probablement résolu lorsque la méthode UpdateLayout est appelée pour la première fois, si le DataContext est déjà défini. Si le DataContext n'a pas été défini, il va essayer de résoudre après le contrôle est chargé: voir le DataBindEngine.RequestRun() ci-dessous

private void RequestRun() 
{ 
    base.Dispatcher.BeginInvoke(DispatcherPriority.DataBind, new DispatcherOperationCallback(this.Run), false); 
    base.Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new DispatcherOperationCallback(this.Run), true); 
} 

Si la propriété est la propriété limitée d'un contrôle WPF qui se trouve dans un ControlTemplate cependant, il sera résolu pour la première fois pendant le premier passage de mise en page qui déclenchera un ApplyTemplate et conduira à la résolution de la liaison. Ce ne sont que des exemples spécifiques, si vous voulez comprendre complètement les mécanismes de liaison, vous devriez utiliser le réflecteur pour jeter un oeil aux classes MS.Internal.Data.DataBindEngine et System.Windows.Data.BindindExpression. Ce sont les classes chargées de pousser les bonnes données lors de l'utilisation des liaisons sur les propriétés de dépendance.

Questions connexes