9.4.2 页面导航
WPF浏览器应用程序页面(Page)的设计、开发等与WPF窗体一样,只是在页面导航上有所区别,在WPF窗体中,新窗体的显示是通过System.Windows.Window类的Show()或ShowDialog()方法来实现的。而在WPF页面中,新页面的显示大致需要以下3个步骤。
(1)创建页面对象:通过new关键字创建新的要显示的页面对象。
(2)对页面进行参数设置等必要的初始化操作,如果不需要初始化,则直接进入第(3)步。
(3)通过Page.NavigationService属性获取当前页面的导航对象,然后通过Navigation Service.Navigate()方法导航到新的页面。
示例代码9-13是示例代码9-12的后台C#代码,函数btnEnter_Click()以最简单的例子演示了导航到新页面的3个步骤,它首先创建一个新页面Page2的对象pg,然后设置Page2的显示必需参数UserName,最后通过Page.NavigationService属性的Navigate()方法导航到新的页面pg。
示例代码9-13:
namespace WPFBroseApp { /// <summary> /// Page1.xaml 的交互逻辑 /// </summary> public partial class Page1 : Page { public Page1( ) { InitializeComponent( ); } private void btnEnter_Click(object sender, RoutedEventArgs e) { //创建新的页面对象pg Page2 pg = new Page2( ); //初始化页面对象的参数 pg.UserName = this.tbName.Text; //导航到新的页面对象pg this.NavigationService.Navigate(pg); } } } |
其中,Page2是一个新的增加到项目WPFBroseApp中的页面,选中项目WPFBroseApp,通过选择右键菜单中的"添加"→"页"命令完成添加动作。示例代码9-14是Page2的 XAML代码和后台C#代码的具体实现,Page2在加载时通过Page_Loaded()方法显示欢迎 信息。
示例代码9-14:
<Page x:Class="WPFBroseApp.Page2" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Page2" Loaded="Page_Loaded" Height="52" Width="248"> <Grid> <Label Name="lbHint" FontSize="20" FontWeight="Bold" Foreground="Blue" HorizontalAlignment="Left" Width="272" Height="67" VerticalAlignment="Top">Label</Label> </Grid> </Page> ----------------------------------------------------------- ------------------------------------------------------------------------ namespace WPFBroseApp { /// <summary> /// Page2.xaml 的交互逻辑 /// </summary> public partial class Page2 : Page { public Page2( ) { InitializeComponent( ); } private string _UserName; //用户名属性 public string UserName { get { return this._UserName; } set { this._UserName = value; } } //加载时显示欢迎信息 private void Page_Loaded(object sender, RoutedEventArgs e) { this.lbHint.Content = "欢迎----" + this._UserName; } } } |
在启动WPFBroseApp之后,通过单击"进入==>>"按钮导航到Page2,得到如图9-11所示的效果图,注意最上面的导航栏"返回"变成可用,通过该命令可以回退到Page1页面。
|
图9-11 WPFBroseApp 界面效果(2) |
【责任编辑:
夏书 TEL:(010)68476606】
(0票)
(0票)
(0票)
(0票)
(0票)
(0票)