【发布时间】:2013-03-21 13:43:37
【问题描述】:
我有一个WPF TabControl 和两个TabItems。我正在尝试更改Button click 事件后面代码上的选定选项卡并执行一些其他代码。在这个例子中:
private void Button_Click(object sender, RoutedEventArgs e)
{
ConvertDataTabControl.SelectedIndex = 1;
System.Threading.Thread.Sleep(2000);
...
}
我希望 UI 会刷新并从 Tab 0 移动到 Tab 1,然后才执行 Sleep 方法,但 UI 仅在 Button_Click 完成执行后才会刷新。我尝试拨打InvalidateVisual,但它不起作用。
有没有办法在执行Sleep之前强制刷新UI?
【问题讨论】:
-
在 WPF 中,很多东西都被延迟了,尤其是在输入、视图创建和渲染方面。最好避免这样的代码,并对情况“做出反应”或使用适当的状态机之类的方法。如果您想在页面更改时执行某些操作,请对该特定页面的 Loaded 事件做出反应。
标签: c# wpf button tabcontrol thread-sleep