2012-12-14 23 views

Odpowiedz

7

To nie jest takie proste, nie dostaniesz prostej odpowiedzi na to pytanie. To zależy od kontekstu.

Oto dwa proste przykłady:

Jeśli właściwość ograniczonym jest własnością kontroli WPF, który nie jest wewnątrz ControlTemplate, wiązanie najprawdopodobniej zostanie rozwiązany po raz pierwszy, gdy metoda UpdateLayout nazywany jest dla po raz pierwszy, jeśli DataContext jest już ustawiony. Jeśli DataContext nie została ustalona, ​​będzie starał się być rozwiązany po kontroli jest załadowany: patrz DataBindEngine.RequestRun() poniżej

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

Jeżeli nieruchomość jest własnością ograniczonym kontroli WPF, który jest wewnątrz ControlTemplate zostanie on jednak rozwiązany po raz pierwszy podczas pierwszego przebiegu układania, który wyzwoli kod ApplyTemplate i doprowadzi do rozstrzygnięcia wiązania.

To są tylko konkretne przykłady, jeśli chcesz w pełni zrozumieć mechanizmy wiążące, powinieneś użyć reflektora, aby przyjrzeć się klasom MS.Internal.Data.DataBindEngine i System.Windows.Data.BindindExpression. Są to klasy odpowiedzialne za przesyłanie poprawnych danych podczas korzystania z powiązań na właściwościach zależności.

Powiązane problemy