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>

 

WPF学习之路(九)导航链接

 

如果页面寄宿窗口不是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"));

    }

}

 

 

其他导航方式

 导航工具栏

WPF学习之路(九)导航链接

 

 导航命令

添加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...

 

你可能感兴趣的:(WPF)