【发布时间】:2009-03-19 16:18:36
【问题描述】:
我试图在更改 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 对象的绑定,以便我可以测量 View 需要多大才能显示 ViewModel。我正在重复使用相同的视图进行测量,因为我正在虚拟化数据。
有谁知道如何在 DataContext 更改时强制更新绑定?
请注意,绑定最终会更新。
View 包含一个 TextBlock,它是根据 ViewModel 改变大小的主要元素。在更改 DataContext 后,我立即查看了此元素上 TextProperty 的 BindingExpression,但调用 UpdateTarget() 并不能解决问题,并且 BindingExpression.DataItem 似乎为空。
编辑: BindingExression 的状态是未附加。诀窍是弄清楚如何附加它。
【问题讨论】:
标签: c# .net wpf data-binding