我在我的应用中使用了以下类型的导航。我需要另一堂课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)
{
\\...
}
}
答案 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”。