我正在尝试在更改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所需的View的大小。我正在重用相同的View进行测量,因为我正在虚拟化数据。
有人知道如何在DataContext更改时强制更新绑定吗?
请注意,绑定最终会更新。
View包含一个TextBlock,它是基于ViewModel更改大小的主要元素。我在更改DataContext后立即查看了该元素的TextProperty的BindingExpression,但调用UpdateTarget()并不能解决问题,BindingExpression.DataItem似乎为空。
编辑:BindingExression的状态为Unattached。关键是弄清楚如何将其附加。