在WPF的Page中的导航

 

首先在Page页中加一个<Hyperlink>的标签,再添中一个Click事件,指向后台处理程序。如下:

<Hyperlink Click="hyperlink_Click">你好</Hyperlink>

在.cs文件中,需要引入 using System.Windows.Navigation命名空间   

然后处理事件,也就是主体了。     

void hyperlink_Click(object sender, RoutedEventArgs args)  

{

}

有四种方法(事例中是由当前页向Page4导航),如下:

1、

           Page4 page = new Page4();
            NavigationService ns = NavigationService.GetNavigationService(this);
            ns.Navigate(page);

2、

            NavigationService ns = NavigationService.GetNavigationService(this);
            ns.Source = new Uri("Page4.xaml", UriKind.Relative);

3、

           NavigationService ns = NavigationService.GetNavigationService(this);
            ns.Content = new Page4();

4、
            Page4 page = new Page4();
            this.NavigationService.Navigate(page);

   5、     this.NavigationService.Refresh();//导航到本页

如果想缓存浏览过的页面可以在Page头中设置:

<Page
    x:Class="BrowserApp"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    WindowTitle="Page3"
    KeepAlive="True">     
</Page>

如果想减少内存的开销,可以使用这个方法(注意文中黑体字):

public static readonly DependencyProperty RetainedStateDP;

   using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
public partial class RetainedStateDPPage : System.Windows.Controls.Page
{
    
    public static readonly DependencyProperty RetainedStateDP;

    static RetainedStateDPPage()
    {
     
        RetainedStateDPPage.RetainedStateDP =
            DependencyProperty.Register(
                "RetainedState",
                typeof(string),
                typeof(RetainedStateDPPage),
                new FrameworkPropertyMetadata(
                    null,
                    FrameworkPropertyMetadataOptions.Journal));
    }

   public RetainedStateDPPage()
    {
        InitializeComponent();
    }


    public string RetainedState
    {
        get
        {
            return (string)base.GetValue(RetainedStateDPPage.RetainedStateDP);
        }
        set
        {
            base.SetValue(RetainedStateDPPage.RetainedStateDP, value);
        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值