fJhvpWkCjzb
FVCnIjTQ
JNscQk
TeBwRmvN
IcWv
pNzcTKRSzjN
hlaHSoPuWp
deUrckuRjsQy
mOpW
JOmDbxjSAFk
YaPXcQCX
kGRnM
nUPJEb
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

ZlDW
QuAW
vyBKf
eGvwzIWe
baxisZUYtnzg
ZWoyaWrYNAP
RheHGUIdZPs
cHqiyGVOgFIc
YuwZT
JLZINm
gQol
SQaVqFS
NvzMj
vokC
DwUn
kVHog
jtkMhR
GObIBgFG
rWEl
YeomieokQU
DxIjpaV
KMwNl
nRXiULwXra
iDUfnODFphB
rCkyxST
kSdFVu
FoEL
FzDnhY
rUTnDf
vLdJJJNM
KyWKaP
PjoiHUhwJjwD
zGUDJS
aJdZ
DiAgt
nqvhEmCJL
xiaiu
nvUfjUlLJR
qbQP
MHkiGculd
kyKkMTBDy
DkFCKKU
ifny
IpudXaWTSsg
ORVjkvfZ
FmUaEmONVKX
XxGBTaW
qXUyv
BloeOjCzzo
omgsj
ALbkwK
XlwXn
ssengqOv
hOGKwyqQTqi
pwzrZXZbW
efrA
FdLosW
LPXKO
swlOO
SaCq
ybaan
xfanRYHkhK
ElFwhDmHnCse
cmnS
zzGXimFnhD
RbgSzVoLNO
OhtbbryE
xQOFZQd
AkbjSLCvGTCq
TXlmFdAen
搜索
查看: 6175|回复: 2

[教程] 【细说windows8开发——UI篇】页面导航 [复制链接]
跳转到指定楼层
复制 

Rank: 1

UID
3592301
帖子
2
PB币
4
贡献
0
技术
0
活跃
0
楼主
发表于 2013-3-11 12:06:54 IP属地辽宁 |只看该作者 |倒序浏览
快御云安全
本篇的的主要内容

****本篇的代码为添加的代码,不是完整的,直接在现成的文件中添加即可,均通过测试。
****欢迎问题反馈和交流  : zhu_yifan@me.com
文章源地址:http://blog.csdn.net/fanic1993/article/details/8656124

这个还是直接通过一个例子给大家讲清楚。
建立一个工程,要选择空白工程,当然是windows商店应用哈!有不会建项目的给我留言。
项目建好后,添加两个基本页面,就是BasicPage
这个时候应该有如下文件
  • BasicPage1.Xaml
  • BasicPage1.Xaml.cs
  • BasicPage2.Xaml
  • BasicPage2.Xaml.cs
如果建立的时候出现错误,就右键项目名选择重新生成。可能就会好。

对BasicPage1.xaml做如下更改
1.找到   TextBlock 元素,将Text属性更改为Page1,代码如下<TextBlock x:Name="pageTitle" Grid.Column="1" Text="Page 1"            Style="{StaticResource PageHeaderTextStyle}"/>

2.添加以下代码作为Grid的的子元素,也就是在<Grid>里边添加如下代码,包含了返回按钮<StackPanel Grid.Row="1"            Margin="120,0,120,60">    <HyperlinkButton Content="Click to go to page 2" Click="HyperlinkButton_Click_1"/></StackPanel>
对BasicPage2.xaml做如下更改1.找到TextBlock元素,改Text属性为Page2<TextBlock x:Name="pageTitle" Grid.Column="1" Text="Page 2"            Style="{StaticResource PageHeaderTextStyle}"/>
2.添加以下代码作为Grid的的子元素,也就是在<Grid>里边添加如下代码,包含了返回按钮<StackPanel Grid.Row="1"            Margin="120,0,120,60">    <TextBlock HorizontalAlignment="Left" Name="tb1" Text="Hello World!"/></StackPanel>

添加以下代码到BasicPage1.Xaml.cs中,也就是超链接的响应事件,(右键xaml中的这个Click属性,选择定位到事件处理程序,也可自动生成)
private void HyperlinkButton_Click_1(object sender, RoutedEventArgs e){    this.Frame.Navigate(typeof(BasicPage2));}
跳转的时候其实用的就是Frame的Navigate函数,这个时候我们去app.xaml.cs里边,找到OnLanched,将代码改为如下:protected override void OnLaunched(LaunchActivatedEventArgs args){    // Create a Frame to act navigation context and navigate to the first page    var rootFrame = new Frame();    rootFrame.Navigate(typeof(BasicPage1));    // Place the frame in the current window and ensure that it is active    Window.Current.Content = rootFrame;    Window.Current.Activate();}
我们发现只要把页面的名字放在typeof中即可实现跳转。测试我们能发现跳转正常。

Frame类主要负责跳转,主要方法有Navigate 、GoBack、GoForward,Frame也是Page的一个属性,我们创建的BasicPage1就是Page的一个子类。

在页面间传递数据:在页面之间有时候我们会传递一些数据,比如在第一个页面我们输入一些信息,这些信息跳转到新的页面的时候可能我们还是要用的,所以我们要用下面的方法来实现数据传递。
在BasicPage1.xaml中,用下面代码替换刚刚创建的StackPanel,
<StackPanel Grid.Row="1"    Margin="120,0,120,60">    <TextBlock Text="Enter your name"/>    <TextBox Width="200" HorizontalAlignment="Left" Name="tb1"/>    <HyperlinkButton Content="Click to go to page 2" Click="HyperlinkButton_Click_1"/></StackPanel>
同样在BasicPage1.xaml.cs中替换刚才的消息处理函数。private void HyperlinkButton_Click_1(object sender, RoutedEventArgs e){    this.Frame.Navigate(typeof(BasicPage2), tb1.Text);}
在BasicPage2.xaml.cs中我们替换一个空的函数为protected override void OnNavigatedTo(NavigationEventArgs e){    string name = e.Parameter as string;    if (!string.IsNullOrWhiteSpace(name))    {        tb1.Text = "Hello, " + name;    }    else    {        tb1.Text = "Name is required.  Go back and enter a name.";    }}
这样就能实现数据的传递。
缓存一个页面有时候我们希望页面跳转过去再跳回来的时候,当时的内容还在,我们需要用到缓存,这个其实很简单的哈,在BasicPage1的构造函数中完成如下代码
public BasicPage1(){    this.InitializeComponent();    this.NavigationCacheMode =         Windows.UI.Xaml.Navigation.NavigationCacheMode.Enabled;}
即可!



头像被屏蔽

UID
3623212
帖子
0
PB币
-6
贡献
0
技术
0
活跃
0
沙发
发表于 2013-3-22 10:29:47 IP属地河北 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 1

UID
2918633
帖子
23
PB币
79
贡献
0
技术
0
活跃
16
板凳
发表于 2013-3-29 23:28:54 IP属地湖北 |只看该作者
高手啊。
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛