c#:从外部类访问受保护的类变量?

时间:2013-08-28 13:34:59

标签: c# xaml windows-phone-8

我在我的应用中使用了以下类型的导航。我需要另一堂课var page。因为我使用了受保护的类,所以我不能调用这个var页面。无论如何都要调用这个var页面。因为,我需要这个var来初始化另一个类。那么,如何从类外部访问受保护的类变量?

    protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    if (NavigationContext.QueryString.ContainsKey("Page"))
    {
        var page = NavigationContext.QueryString["Page"];
        browser.Navigate(new Uri("/f" + page + ".html, UriKind.Relative));
    }
}

我需要这堂课;

    private void def(object sender, EventArgs e)
    {
        switch(page)
        {
        \\...
        }
    }

2 个答案:

答案 0 :(得分:1)

我建议您将其保留在Windows Phone设置键,值存储中。

在第一堂课中存储

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    if (NavigationContext.QueryString.ContainsKey("Page"))
    {
        var page = NavigationContext.QueryString["Page"];
        IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;

        //store it in the settings 
        if (!settings.Contains("qsPage"))
        {
            //if setting has not been created, add it
            settings.Add("qsPage", page);
        }
        else
        {
            //store a the page in the setting
            settings["qsPage"] = page;
        }
        browser.Navigate(new Uri("/f" + page + ".html", UriKind.Relative));
    }
}

在第二课中你使用它

private void def(object sender, EventArgs e)
{
    //if you need to check that the setting exists use this 
    //if (IsolatedStorageSettings.ApplicationSettings.Contains("qsPage"))

    //retrieve tha value from the settings
    var page = IsolatedStorageSettings.ApplicationSettings["qsPage"];

    switch(page)
    {
    \\...
    }
}

代码改编自此处的示例 快速入门:使用Windows Phone中的设置 http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj714090%28v=vs.105%29.aspx

并且不要忘记关闭“.html”字符串whith doble引号

这个其他答案也可能有用

<强> How are normal people supposed to persist settings in a Windows Phone 8 app?

答案 1 :(得分:0)

根据定义,受保护的类(或成员)只能在自己的类或派生类中访问。

创建另一个继承受保护类的类,给它一个公共属性,并在构造函数中为该属性赋值“page”。