2010-04-24 85 views
0

在我的应用我在我的视图模型有这样的代码:数据绑定时间太长更新

hiddenTextContainer.PreHideVerticalOffset = VerticalOffset; 

      hiddenTextContainer.HiddenText = Text.Remove(SelectionStart, SelectionLength); 
      hiddenTextContainer.HasHiddenText = true; 
      hiddenTextContainer.NonHiddenTextStart = SelectionStart; 
      Text = Text.Substring(SelectionStart, SelectionLength);   
      SelectionStart = Text.Length; 

      hiddenTextContainer.ImmediatePostHideVerticalOffset = VerticalOffset; 

这段代码是用来隐藏在文本框中选定的文本。 Text是绑定到文本框的文本属性的字符串属性数据,VerticalOffset是绑定到同一文本框的VerticalOffset属性的双重属性数据。

我需要在选定文本隐藏之前和之后保存VerticalOffset,但使用低于hiddenTextContainer.PreHideVerticalOffsethiddenTextContainer.ImmediatePostHideVerticalOffset的代码无论如何都始终设置为相同的值。

我已经想通了,这是因为文本框的文本没有被代码到达时间更新: hiddenTextContainer.ImmediatePostHideVerticalOffset = VerticalOffset;

有没有什么办法可以解决这个问题?

回答

1

可能不是文本的属性更新太慢,而是测量和排列异步执行。我建议明确调用Window.UpdateLayout(或类似的,取决于你需要重新计算的容器)。

可能,您需要先执行InvalidateArrange或InvalidateMeasure。

+0

谢谢!它工作得很好。 – Justin 2010-06-21 17:42:49