你的位置:首页 > ASP.net教程

[ASP.net教程]WPF学习之路(九)导航链接


Hyperlink

WPF中超链接类型是Hyperlink,除了能在页面之间导航,还能再同一个页面下进行段落导航

 

实例:

<Grid>  <FlowDocumentReader>    <FlowDocument>      <Section LineHeight="25" FontSize="15">        <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="20" Background="AliceBlue">        1. First paragraph content      </Paragraph>      <Paragraph x:Name="second" FontSize="20" Background="AliceBlue">        2. 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="15" />    <Setter Property="Margin" Value="5" />  </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 = 25 });  }  else if (link == link4)  {    NavigationService.Navigate(new Uri("http://www.bing.com"));  }}

 

 

其他导航方式

 导航工具栏

 

 导航命令

添加Button控制导航,相当于自定义导航工具栏

<Button Height="50" Width="100" Content="Back" Command="NavigationCommands.BrowseBack" /><Button Height="50" Width="100" Content="Forward" Command="NavigationCommands.BrowseForward" />

 

 

 历史记录

 WPF中Jaurnal记录了每一次导航操作,从而实现导航工具栏的功能

Journal 包含两个数据栈用来记录前进和后退页面的显示状态,每个相关 Page 都会对应一个 JournalEntry。日志状态自动恢复仅对单击导航条上前进后退按钮有效。

 

 

 

 

 

 

 

 

 

 

To be continue...