Я пытаюсь измерить объект сразу после изменения 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);
}
Я хочу обновить привязки для объекта View, чтобы я мог измерить, насколько большим должно быть представление для отображения ViewModel. Я повторно использую тот же вид для измерения, потому что я виртуализирую данные.
Кто-нибудь знает, как принудительно обновить привязку при изменении DataContext?
Обратите внимание, что привязка со временем обновляется.
Представление содержит TextBlock, который является основным элементом, который изменяет размер на основе ViewModel. Я посмотрел на BindingExpression для TextProperty для этого элемента сразу после изменения DataContext, но вызов UpdateTarget () не решает проблему, и BindingExpression.DataItem представляется равным нулю.
EDIT:
Статус BindingExression является Unattached. Хитрость заключается в том, чтобы выяснить, как его прикрепить.