WPF中的有许多功能还需要我们在实际开发中去慢慢的体会其用法,以此来总结自己的使用技巧。在这里我们就先来了解下WPF导航的一些实现方法。#t#
首先WPF导航在Page页中加一个< Hyperlink>的标签,再添中一个Click事件,指向后台处理程序。如下:
- < Hyperlink Click="
hyperlink_Click">你好< /Hyperlink>
在.cs文件中,需要引入 using System.Windows.Navigation命名空间
然后处理事件,也就是WPF导航主体了。
- void hyperlink_Click
(object sender, Routed
EventArgs args) - {
- }
有四种WPF导航方法(事例中是由当前页向Page4导航),如下:
1、
- Page4 page = new Page4();
- NavigationService ns =
NavigationService.GetNavi
gationService(this);- ns.Navigate(page);
2、
- NavigationService ns =
NavigationService.GetNavi
gationService(this);- ns.Source = new Uri
("Page4.xaml", UriKind.
Relative);
3、
- NavigationService ns =
NavigationService.GetNavi
gationService(this);- ns.Content = new Page4();
4、
- Page4 page = new
Page4();- this.NavigationService.
Navigate(page);
5、
- this.Navigation
Service.Refresh();//导航到本页
如果想缓存浏览过的页面可以在Page头中设置:
- < Page
- x:Class="BrowserApp"
- xmlns="http://schemas.microso
ft.com/winfx/2006/xaml/
presentation"- xmlns:x="http://schemas.
microsoft.com/winfx/2006/xaml"- WindowTitle="Page3"
- KeepAlive="True">
- < /Page>
如果想减少内存的开销,可以使用这个WPF导航方法(注意文中黑体字):
- public static readonly
DependencyProperty RetainedStateDP;- using System;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Navigation;
- public partial class RetainedState
DPPage : System.Windows.Controls.Page- {
- public static readonly
DependencyProperty RetainedStateDP;- static RetainedStateDPPage()
- {
- RetainedStateDPPage.RetainedStateDP =
- DependencyProperty.Register(
- "RetainedState",
- typeof(string),
- typeof(RetainedStateDPPage),
- new FrameworkPropertyMetadata(
- null,
- FrameworkPropertyMetadata
Options.Journal));- }
- public RetainedStateDPPage()
- {
- InitializeComponent();
- }
- public string RetainedState
- {
- get
- {
- return (string)base.GetValue
(RetainedStateDPPage.RetainedStateDP);- }
- set
- {
- base.SetValue(RetainedStateDPPage.
RetainedStateDP, value);- }
- }
- }