0

我们有一个相当大的 Silverlight 应用程序,我们需要向它添加一些额外的功能。该应用程序由一个框架元素和一个带有用于导航的超链接按钮的 TreeView 组成。将加载到主框架中的每个内容都是一个页面。

现在,我需要挂钩到每个 Page 的卸载事件。目前我们使用这样的东西:

/* 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()是直接实现的类,因此我们不需要更改每个页面。

你能告诉我如何创建这样一个自定义页面类吗?

提前感谢您的帮助!!

亲切的问候!

4

1 回答 1

2

您可以创建一个基 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>
于 2013-06-13T13:20:30.843 回答