C#Xamarin.Forms - 拦截Application.MainPage Setter?

时间:2016-07-20 18:25:45

标签: c# xamarin xamarin.forms interceptor getter-setter

在Xamarin Forms项目中,我已经能够成功拦截ContentPage.Content属性(这是一个带有getter和setter的公共属性)。我有一个类BaseContentPage,它继承自ContentPage,并覆盖Content属性,如下所示:

public new View Content
{
    set
    {
        // create a wrapper around the value of Content
        // ... someWrapper = ...

        // set Content to the wrapped content
        base.Content = someWrapper;
    }
}

我认为两个关键点是:使用new关键字,并使用base.Content = ...

我试图用我的App.cs文件中的Application.MainPage属性(继承自Application)做同样的事情,如下所示:

public new Page MainPage
{
    get
    {
        return base.MainPage;
    }
    set
    {
        // do something before navigating to the new page
        // ...

        base.MainPage = value;
    }
}

但我的应用程序有一些奇怪的行为 - 当我导航到我现有的一些页面时,它们显示为空白页面(只是一个白色屏幕)。如果我移除了吸气剂,并且只有一个定位器,它似乎工作正常。在getter中,我还尝试了return value,但这给了我错误The name 'value' does not exist in the current context

这是用getter和setter拦截公共财产的正确方法吗?

0 个答案:

没有答案