WPF导航在page中的实现方法

12 篇文章 0 订阅
3 篇文章 0 订阅
本文详细介绍了在WPF中如何在Page中实现导航功能,包括使用标签结合Click事件,以及四种不同的导航方法:通过NavigationService的Navigate、Source、Content属性和直接调用Navigate方法。此外,还提到了页面缓存的设置以及减少内存开销的导航策略。
摘要由CSDN通过智能技术生成

WPF导航的实现方法有很多种。我们在文章中通过各种代码示例为大家详细介绍了这些方法的具体操作步骤,希望对大家有所帮助。

AD: 51CTO云计算架构师峰会 抢票进行中!


 

WPF中的有许多功能还需要我们在实际开发中去慢慢的体会其用法,以此来总结自己的使用技巧。在这里我们就先来了解下WPF导航的一些实现方法。

 

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

 

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

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

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

 

  1. void hyperlink_Click
    (object sender, Routed
    EventArgs args)   
  2. {  
  3.  

 

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

1、

 

 
  
  1. Page4 page = new Page4();  
  2. NavigationService ns =  NavigationService.GetNavi gationService(this);  
  3. ns.Navigate(page); 

 

2、

 

 
  
  1. NavigationService ns =  NavigationService.GetNavi gationService(this);  
  2. ns.Source = new Uri ("Page4.xaml", UriKind. Relative); 

 

3、

 

 
  
  1. NavigationService ns =  NavigationService.GetNavi gationService(this);  
  2. ns.Content = new Page4(); 

 

4、
 

 
  
  1. Page4 page = new  Page4();   
  2. this.NavigationService. Navigate(page); 

 

5、

 
  
  1. this.Navigation Service.Refresh();//导航到本页 

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

 

 
  
  1. < Page 
  2. x:Class="BrowserApp" 
  3. xmlns="http://schemas.microso ft.com/winfx/2006/xaml/ presentation" 
  4. xmlns:x="http://schemas. microsoft.com/winfx/2006/xaml" 
  5. WindowTitle="Page3"   
  6. KeepAlive="True">   
  7. < /Page> 

 

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

 

 
  
  1. public static readonly  DependencyProperty RetainedStateDP;  
  2. using System;  
  3. using System.Windows;  
  4. using System.Windows.Controls;  
  5. using System.Windows.Navigation;  
  6. public partial class RetainedState DPPage : System.Windows.Controls.Page  
  7. {  
  8. public static readonly  DependencyProperty RetainedStateDP;  
  9. static RetainedStateDPPage()  
  10. {  
  11. RetainedStateDPPage.RetainedStateDP =  
  12. DependencyProperty.Register(  
  13. "RetainedState",  
  14. typeof(string),  
  15. typeof(RetainedStateDPPage),  
  16. new FrameworkPropertyMetadata(  
  17. null,  
  18. FrameworkPropertyMetadata Options.Journal));  
  19. }  
  20. public RetainedStateDPPage()  
  21. {  
  22. InitializeComponent();  
  23. }  
  24. public string RetainedState  
  25. {  
  26. get  
  27. {  
  28. return (string)base.GetValue (RetainedStateDPPage.RetainedStateDP);  
  29. }  
  30. set  
  31. {  
  32. base.SetValue(RetainedStateDPPage. RetainedStateDP, value);  
  33. }  
  34. }  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值