WPF学习之路(九)导航链接
Hyperlink
WPF中超链接类型是Hyperlink,除了能在页面之间导航,还能再同一个页面下进行段落导航
实例:
<Grid>
<FlowDocumentReader>
<FlowDocument>
<Section LineHeight="" FontSize="">
<List>
<ListItem>
<Paragraph>
<Hyperlink NavigateUri="CustomPage.xaml#first">
First Paragraph
</Hyperlink>
</Paragraph>
</ListItem>
<ListItem>
<Paragraph>
<Hyperlink NavigateUri="CustomPage.xaml#second">
Second Paragraph
</Hyperlink>
</Paragraph>
</ListItem>
</List>
</Section>
<Paragraph x:Name="first" FontSize="" Background="AliceBlue">
. First paragraph content
</Paragraph>
<Paragraph x:Name="second" FontSize="" Background="AliceBlue">
. Second paragraph content
</Paragraph>
<Paragraph>
<Hyperlink NavigateUri="SimplePage.xaml" >
Hello WPF
</Hyperlink>
</Paragraph>
</FlowDocument>
</FlowDocumentReader>
</Grid>

如果页面寄宿窗口不是NavigationWindow,超链接是无法导航的
通过编写代码导航
在某些情况下Hyperlink不能实现,需要通过NavigationService来实现
1.导航需要传值
2.导航到页面之前要设置属性
3.运行时才知道要导航到哪个页面
实例:
DemoPage.xaml
<Page.Resources>
<Style TargetType="TextBlock">
<Setter Property="FontSize" Value="" />
<Setter Property="Margin" Value="" />
</Style>
</Page.Resources>
<StackPanel>
<TextBlock>
Navigate to
<Hyperlink x:Name="link1" Click="link_click">
SimplePage.xaml
</Hyperlink>
</TextBlock>
<TextBlock>
Navigate to
<Hyperlink x:Name="link2" Click="link_click">
SimplePage.xaml
</Hyperlink>
(Call a constructor with parameter)
</TextBlock>
<TextBlock>
Navigate to
<Hyperlink x:Name="link3" Click="link_click">
.Net Object
</Hyperlink>
</TextBlock>
<TextBlock>
Navigate to site
<Hyperlink x:Name="link4" Click="link_click">
http://www.bing.com
</Hyperlink>
</TextBlock>
</StackPanel>
class Person
{
public string Name { get; set; }
public int Age { get; set; } public override string ToString()
{
return "Name: " + Name + "\nAge: " + Age;
}
}
Page.xaml.cs
private void link_click(object sender, RoutedEventArgs e)
{
Hyperlink link = sender as Hyperlink;
if (link == link1)
{
NavigationService.Navigate(new Uri("pack://application:,,,/SimplePage.xaml"));
}
else if (link == link2)
{
NavigationService.Navigate(new SimplePage("Hello Navigation"));
}else if (link == link3)
{
NavigationService.Navigate(new Person() { Name = "Alex", Age = });
}
else if (link == link4)
{
NavigationService.Navigate(new Uri("http://www.bing.com"));
}
}
其他导航方式
导航工具栏

导航命令
添加Button控制导航,相当于自定义导航工具栏
<Button Height="" Width="" Content="Back" Command="NavigationCommands.BrowseBack" />
<Button Height="" Width="" Content="Forward" Command="NavigationCommands.BrowseForward" />
历史记录
WPF中Jaurnal记录了每一次导航操作,从而实现导航工具栏的功能
Journal 包含两个数据栈用来记录前进和后退页面的显示状态,每个相关 Page 都会对应一个 JournalEntry。日志状态自动恢复仅对单击导航条上前进后退按钮有效。
To be continue...
WPF学习之路(九)导航链接的更多相关文章
- WPF学习之路初识
WPF学习之路初识 WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...
- WPF学习之路(九)导航和页面(续)
生命周期 如果Page1成功导航到Page2,首先会触发NavigationService的Navigating事件,标识导航开始.随后创建Page2对象,并且触发NavigationProgress ...
- WPF学习之路(八)页面
传统的应用程序中有两类应用程序模式:桌面应用,Web应用.WPF的导航应用程序模糊了这两类应用程序的界限的第三类应用程序 WPF导航表现为两种形式,一是将导航内容寄宿于窗口,二是XAML浏览器应用程序 ...
- WPF学习之路(一) 初识WPF
参考<葵花宝典-WPF自学手册> VS2012 先创建第一个WPF小程序 1.创建WPF程序 2.查看Solution,WPF中xaml文件和cs文件经常成对出现 两个主要的类:APP(W ...
- WPF学习之路一
前段时间一直在学习MVC,工作需要,现在需要180度急转弯,搞WPF,MVVM,只能找资料学习了. WPF中有一个消息机制,就是当前台控件绑定的值改变时,会自动通知到指定的事件来改变VM的值,反之亦然 ...
- WPF学习之路(十四)样式和模板
样式 实例: <Window.Resources> <Style x:Key="BtnStyle"> <Setter Property=" ...
- WPF学习之路(十三)URL
URL一般由三个部分组成,协议.资源所在主机地址.资源路径 WPF中URL同样有三部分组成:pack.authority(application:| siteoforigin:).路径 资源文件 本地 ...
- WPF学习之路(十二)控件(Items控件)
ListBox 提供了一个选项列表,可以固定或者动态绑定 <StackPanel> <GroupBox Margin="> <GroupBox.Header& ...
- WPF学习之路(十)实例:用户注册
通过一个注册用户的实例了解页面间数据的传递 首先构建一个User类 User.cs public class User { private string name; public string Na ...
随机推荐
- 在Winform开发中使用日程控件XtraScheduler(2)--深入理解数据的存储
在上篇随笔<在Winform开发中使用日程控件XtraScheduler>中介绍了DevExpress的XtraScheduler日程控件的各种使用知识点,对于我们来说,日程控件不陌生,如 ...
- 会员管理系统的设计和开发(2)-- RDLC报表的设计及动态加载
在上篇<会员管理系统的设计和开发(1)>介绍了关于会员系统的一些总体设计思路和要点,经过一段时间开发,软件终于完成并发布.在这期间,碰到了不少技术难点,并积累了不少开发心得和经验,本篇继续 ...
- Redis系列三之持久化
一.Redis持久化 Redis是一个支持持久化的内存数据库,redis需要经常将内存中的数据同步到磁盘来保证持久化. redis提供了不同级别的持久化方法: Snapshotting(快照,默认方式 ...
- C#-INotifyPropertyChanged(解决数据绑定的界面刷新问题)
最近做项目用到DataGridView,用它绑定数据源后,如果数据源中的数据修改无法及时刷新到控件上,必须切换单元格的焦点才能导致刷新显示新数值,通过查官方文档,用INotifyPropertyCha ...
- Eclipse上GIT插件EGIT使用手册
http://blog.csdn.net/luckarecs/article/details/7427605 Eclipse上GIT插件EGIT使用手册 一_安装EGIT插件 http://dow ...
- python学习笔记12 ----线程、进程
进程和线程的概念 进程和线程是操作系统中两个很重要的概念,对于一般的程序,可能有若干个进程,每一个进程有若干个同时执行的线程.进程是资源管理的最小单位,线程是程序执行的最小单位(线程可共享同一进程里的 ...
- GJM :JS + CSS3 打造炫酷3D相册 [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- BeforeProperties/AfterProperties in Event Receivers
Sharepoint List List BeforeProperties AfterProperties properties.ListItem ItemAdding No Value No Val ...
- jQuery 浮动标签插件,帮助你提升表单用户体验
浮动标签模式(Float Label Pattern)是最新流行的一种表单输入域的内容提示方式,当用户在输入框输入内容的时候,原先占位符的内容向上移动,显示在输入的内容的上面.这里推荐的这款 jQue ...
- Mongodb的备份,恢复,导入与导出(cmd命令行实现)
要用MongoDB,自然就要用到数据导入导出,就自己学习了一下. 在Mongo学习(二)中就讲到了在bin目录下有一些工具,本篇就是使用这些工具进行数据的导入导出及备份恢复. 注意:以下命令均在cmd ...