Próbuję zmierzyć obiekt natychmiast po zmianie DataContext, ale powiązanie obiektu nie zostanie wkrótce zaktualizowane. Oto mój kod:Aktualizowanie powiązania natychmiast po zmianie DataContext
// In MeasureOverride(Size)
m_inputWidth = 0.0;
Size elemSize = new Size(double.PositiveInfinity, RowHeight);
MapElementView ruler = new MapElementView();
// Measure inputs
foreach (MapElementViewModel elem in m_vm.InputElements)
{
ruler.DataContext = elem;
ruler.Measure(elemSize);
m_inputWidth = Math.Max(m_inputWidth, ruler.DesiredSize.Width);
}
Chcę powiązań na widok obiektu do aktualizacji, aby można było mierzyć jak duża musi być widok, aby wyświetlić ViewModel. Używam tego samego widoku do pomiaru, ponieważ dokonuję wirtualizacji danych.
Czy ktoś wie, jak wymusić powiązanie, aby zaktualizować po zmianie DataContext?
Należy pamiętać, że powiązanie aktualizuje się ostatecznie.
Widok zawiera element TextBlock, który jest głównym elementem zmieniającym rozmiar na podstawie modelu ViewModel. Spojrzałem na BindingExpression dla TextProperty na tym elemencie natychmiast po zmianie DataContext, ale wywołanie UpdateTarget() nie rozwiązuje problemu i BindingExpression.DataItem wydaje się mieć wartość NULL.
EDYTOWANIE: Status wartości BindingExression nie jest przyłączony. Sztuką jest dowiedzieć się, jak to dołączyć.
Dobry pomysł. Spróbuję tego. –
Mam następujący wyjątek: Nie można wykonać tej operacji, gdy przetwarzanie programu rozsyłającego jest zawieszone. Wygląda na to, że WPF blokuje Dispatcher podczas układania. Uruchamiam ten kod w MeasureOverride() –