在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);
}
}
}