我是使用WPF的新手。我有我想要创建的以下程序: - 应用程序打开时只有一个按钮 - 用户单击按钮,它会将它们带到具有各种输入的新页面。在WPF中创建页面或Windows
我很困惑我需要如何做到这一点。我尝试打开一个新窗口,但我不想打开一个窗口,我希望它是一个窗口。我试图创建一个新的页面,并使用NavigationService导航到它,但无法让它工作。
基本上我想创建一个工作流,用户输入一些东西,点击下一个按钮,并进入一个新的页面输入一些更多的信息。任何人都可以将我指向正确的方向吗?
我是使用WPF的新手。我有我想要创建的以下程序: - 应用程序打开时只有一个按钮 - 用户单击按钮,它会将它们带到具有各种输入的新页面。在WPF中创建页面或Windows
我很困惑我需要如何做到这一点。我尝试打开一个新窗口,但我不想打开一个窗口,我希望它是一个窗口。我试图创建一个新的页面,并使用NavigationService导航到它,但无法让它工作。
基本上我想创建一个工作流,用户输入一些东西,点击下一个按钮,并进入一个新的页面输入一些更多的信息。任何人都可以将我指向正确的方向吗?
在您的应用程序中使用页面并使用NavigationService在它们之间切换。
例如,如果你在你的paplication两页,“第一页”和“第2页”,可以包括的Page1.xaml如下:
<Button Content="Next" Click="NextClicked" />
,这在您的Page1.xaml.cs:
void NextClicked(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Page2());
}
另外,您可以使用此:
NavigationService.Navigate(new Uri("Page2.xaml", UriKind.Relative));
一般来说是比较容易做的第一,因为ÿ你也可以设置Page2的属性。例如,如果第2页有一个公共的“CURRENTITEM”属性,你可以说:
NavigationService.Navigate(new Page2 { CurrentItem = this.Something });
你不能做到这一点与基于URI语法。
你也可以创建(第1页,第二页等),各个页面的实例,并将它们存储在你的应用程序对象,然后切换到它们是这样的:
NavigationSerivce.Navigate(App.Page2);
这样,如果你曾经浏览到第二页以后你会得到完全相同的Page2对象。或者,您可以使用NavigationService的日记功能来帮助完成此操作。
使用NavigationService是正确的方法。您必须在窗口中添加一个框架来显示您的页面,然后使用NavigationService在它们之间导航。
您可以将应用程序对象的MainWindow引用更改为另一个Window对象。
Application.Current.MainWindow = new SecondWindowToBeDisplayed();
最初似乎没有什么应该使用的偏好有很大的不同:页面或Windows。然而,考虑到应用程序的预期目标,我建议使用UserControl而不是Pages,因为Pages似乎专注于与Web相关的内容,尽管它们也可以用于独立应用程序。在another post中提出的另一个说法是指MSDN-documentation,并指出在使用它所托管的Page的NavigationWindow不记得导航到的内容的实例,因此需要其他WPF技术将该内容存储在导航历史记录中。
NavigationWindow不在导航历史记录中存储内容对象的实例。相反,NavigationWindow每次使用导航历史记录导航时都会创建一个新的内容对象实例。此行为旨在避免在导航到大量内容和大量内容时消耗过多的内存。因此,内容的状态不会从一个导航记录到下一个导航。但是,WPF提供了几种技术,您可以通过它们为导航历史记录中的一段内容存储一段状态。
如果您使用UserControl,那么如果您的目标是创建本机应用程序,则不会出现该问题。您可以下载this模板作为示例以代替使用UserControl。
我该怎么做?例如,我在我的主窗口中有一个表单,指向Page1.xaml的一个Source。 在Page1.xaml我有一个按钮,并在点击事件中使用了以下代码: this.NavigationService.Navigate(“Page2.xaml”); 这似乎只是在页面上显示文本“Page2.xaml”,而不是实际的页面。 – cmptrer 2010-06-16 21:54:52