步骤1:
在App.xaml里定义如下内容:
private static Grid root;
public App()
{
this.Startup += this.Application_Startup;
this.Exit += this.Application_Exit;
this.UnhandledException += this.Application_UnhandledException;
InitializeComponent();
}
private void Application_Startup(object sender, StartupEventArgs e)
{
root = new Grid();
root.Children.Add(new MainPage());
this.RootVisual = root;
}
public static void Navigate(UserControl newPage)
{
UserControl oldPage = root.Children[0] as UserControl;
root.Children.Add(newPage);
root.Children.Remove(oldPage);
}
这样一来,程序会先启动MainPage.xaml,
如果想在MainPage里通过点击一个按钮,打开另一个页面的话,按钮的代码:
App app = (App)Application.Current;
Page2 ep = new Page2();
App.Navigate(ep);
这样做的好处就是:可以提前获取要绑定的数据,并绑定到下一个页面的控件里!
比如我用WCF返回了一个ObserableCollection<GetEventsInfo>,就可以对返回的结果直接进行绑定了。
void gc_GetEventsInfoCompleted(object sender, golfDataService.GetEventsInfoCompletedEventArgs e)
{
if (e.Result != null)
{
try
{
App app = (App)Application.Current;
Page2 ep = new Page2 ();
PagedCollectionView pager = new PagedCollectionView(e.Result); //Page2 页面里的 PageCollectionView
ep.events.ItemsSource = pager; //Page2页面里的一个ListBox
App.Navigate(ep);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}