自定义页面类与自动卸载事件

时间:2013-06-13 12:39:51

标签: c# .net silverlight

我们有一个相当大的Silverlight应用程序,我们需要为它添加一些额外的功能。 该应用程序包含一个Frame-Element和一个TreeView w / HyperlinkBut​​tons用于导航。将加载到主框架中的每个内容都是一个页面。

现在,我需要挂钩每个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()的自定义页面类,这样我们就不需要更改每个页面。

您能告诉我如何创建这样的自定义页面类吗?

提前感谢您的帮助!!

亲切的问候!

1 个答案:

答案 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>