4

从其他屏幕添加新数据后,我想刷新搜索屏幕。我试过做

foreach (var parentScreen in this.Application.ActiveScreens.OfType<ScreenType>())
{
     //Invoke the refresh
     parentScreen.Details.Dispatcher.BeginInvoke(() => parentScreen.Details.Commands.Refresh.Execute());
}

但它似乎在 Beta 2 中不起作用

4

1 回答 1

10

在http://social.msdn.microsoft.com/Forums/en-US/lightswitchgeneral/thread/cf86ad21-48fb-48f2-87d4-e5b15f8f361c#e6879629-145a-4b18-834c-ebee0cfe1473上找到它

不幸的是,ActiveScreens 的集合实际上并不包含一组 Screen 对象。它包含一个代理类,您可以使用它来访问实际的屏幕对象(这是由于不同的线程在不同的线程中运行)。这是一些示例代码,可以实现您所需要的。

  Microsoft.LightSwitch.Client.IActiveScreen searchScreen = Application.ActiveScreens.Where(a => a.Screen is SearchCustomers).FirstOrDefault();
  searchScreen.Screen.Details.Dispatcher.BeginInvoke(() => 
  {
    ((SearchCustomers)searchScreen.Screen).Customers.Refresh();
  });
于 2011-06-09T08:58:19.497 回答