2013-08-28 42 views
1

我在我的应用程序中使用下面的导航类型。我需要另一个班级的var page。因为我使用了受保护的类,所以我无法调用这个var页面。无论如何要调用这个var页面。因为,我需要这个var来初始化另一个类。那么,如何从类外部访问受保护的类变量呢?c#:从外部类访问受保护的类变量?

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) 
     { 
     \\... 
     } 
    } 
+0

目前尚不清楚你想要做什么。另外,我没有在代码中的任何地方看到类定义。你的意思是方法还是功能? – Khan

回答

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)); 
    } 
} 

在seccond类,你使用它改编自例如

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的”串蒙山双人间报价

这对方的回答可能会有所帮助过

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

+0

我得到错误:'名称'会话'在当前上下文中不存在' –

+0

@ user2655873对不起有关“会话”的错误,源代码已更新为使用Windows Phone(键值)设置 –

+0

我得到错误作为名称'txtInput'和'设置'在当前上下文中不存在 –

0

通过定义保护类(或成员),才可以访问在他们自己的类或派生类中。

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

+0

然后在他的第二课,他将需要一个实例那个需要被创建的类没有价值! –

+1

你能否请你用代码解释你的答案。 –

+0

不是从我的手机,没有。而@MauricioGracia有一个有效的观点,你必须改变代码中的其他点来实例化和使用新的派生类,而不是使用受保护的基类。现在我进一步思考,如果您需要从其实例访问数据,那么为什么要保护它? –