我们有一个相当大的Silverlight应用程序,我们需要为它添加一些额外的功能。 该应用程序包含一个Frame-Element和一个TreeView w / HyperlinkButtons用于导航。将加载到主框架中的每个内容都是一个页面。
现在,我需要挂钩每个Page的unload事件。目前我们使用这样的东西:
/* 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_Unloaded()
的自定义页面类,这样我们就不需要更改每个页面。
您能告诉我如何创建这样的自定义页面类吗?
提前感谢您的帮助!!
亲切的问候!
答案 0 :(得分:2)
您可以创建一个基页面类,您的所有页面都从该类中继承了构造函数中的事件...
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>