带有自动卸载事件的自定义页面类
本文关键字:自定义 事件 卸载 | 更新日期: 2023-09-27 18:18:07
我们有一个相当大的Silverlight应用程序,我们需要给它添加一些额外的功能。该应用程序由一个框架元素和一个带超链接按钮的导航树视图组成。每个将被加载到主框架中的内容都是一个页面。
现在,我需要挂钩到每个页面的卸载事件。目前我们使用的是这样的:
/* PageX.xaml */
<navigation:Page
x:Class="Foo.Views.PageX"
<!-- namespacing -->
Title="Test Page X"
Unloaded="Page_Unloaded">
...
</navigation:Page>
后台代码:
/* PageX.xaml.cs */
/* usings */
namespace Foo.Views
{
public partial class PageX : Page
{
public PageX() {
InitializeComponent();
}
private void Page_Unloaded(object sender, RoutedEventArgs e) {
/* CODE */
}
}
}
这种方法需要在每个页面上实现,因为卸载方法中的代码保持完全相同…正如我前面提到的,我们有几个页面,创建一个自定义的Page类会更有用,这个Page_Unloaded()
是直接实现的,这样我们就不需要改变每个页面。
你能告诉我如何创建这样一个自定义page类吗?
提前感谢任何帮助!!
亲切的问候!
你可以创建一个Page基类,所有的页面都继承它,在构造函数中注册事件…
public class BasePage : Page
{
public BasePage()
{
Unloaded += Page_Unloaded;
}
void Page_Unloaded(object sender, RoutedEventArgs e)
{
}
}
那么你所有的页面都可以继承…
public partial class Page1 : BasePage
{
public Page1()
{
InitializeComponent();
}
}
…在每个页面的xaml中…
<base:BasePage x:Class="WPFApp.Page1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:base="clr-namespace:WPFApp">
<Grid>
</Grid>
</base:BasePage>