【发布时间】:2013-02-21 06:12:17
【问题描述】:
我听说这会刷新 UI,但为什么会这样呢? Dispatcher 调用这个空动作,这就是没有调用 InvalidateMeasure() 会触发 UI 在动作内部重新测量、重新排列和重新渲染。 update/refresh UI 的度量和安排流程在哪里?
private static Action EmptyDelegate = delegate() { };
public static void Refresh(UIElement uiElement)
{
uiElement.Dispatcher.Invoke(DispatcherPriority.Render, EmptyDelegate);
}
有什么帮助吗?
EDITED:我想知道为什么UI渲染的细节。像well that triggers ui update 这样的答案对我没有任何帮助。
【问题讨论】:
-
如果您发布此想法的来源的参考可能会有所帮助。
-
我稍微编辑了我的问题。无论您的意思是什么,都没有参考。这似乎是在 wpf 中刷新控件的常用方法。如果您熟悉 WPF,则不需要任何参考资料即可理解代码。我想知道为什么这段代码会刷新 UI,因为没有任何动作或没有动作可以让 UI 进行重新测量和重新渲染。它的空动作,但似乎刷新了 ui。为什么?
-
当你写“我听说这会刷新 UI”或“这似乎是在 wpf 中刷新控件的常用方法”时,听起来你从某个地方得到了这个想法。知道从哪里来会很有趣......
-
@Clemens 我猜这里geekswithblogs.net/NewThingsILearned/archive/2008/08/25/… - 它至少与上面的代码匹配 - 尽管我在很多地方都看到了这个想法。
-
@davisoa 感谢您的链接,我想它已经包含了这个问题的答案。我仍然想知道在什么情况下这种方法比简单地调用 UIElement.UpdateLayout 更好。
标签: c# wpf refresh dispatcher