WPF页面后台加载......怎么样?

时间:2011-09-01 14:19:41

标签: wpf multithreading user-interface backgroundworker

我有一个带标签控件的WPF窗口。制表符控件的每个tabitem都有一个以PAGE为内容的框架......就像这样:

 <TabItem Name="Tab01">
   <Frame Name="Tab01Frame" />
 </TabItem>
 MyPage Tab01Page = New MyPage()
 Tab01Frame.Navigate(Tab01Page)

现在,我遇到了这个问题。 tabitem的每个页面都在窗口构造器上加载,这会导致窗口的性能瓶颈。显示需要几秒钟。

有没有办法在后台进程上加载页面?

1 个答案:

答案 0 :(得分:2)

首先,将初始化代码移动到Loaded事件(不在构造函数中)。这将使UI看起来更具响应性。此外,使用Dispatcher对象来设置任务背景。

 private delegate void DelegateTypeYouDeclare();

 this.Dispatcher.BeginInvoke(new DelegateTypeYouDeclare(MethodToCall), null);

这些只是第一步。有关更好的示例,请参阅以下MSDN文章: http://msdn.microsoft.com/en-us/magazine/cc163328.aspx