2014-02-22 25 views
0

这是我的第一个C#代码,所以我是noob请亲切。我试图让一组单选按钮点击可见的文本块,但我不断收到此错误:试图让文本块在Radiobutton上可见点击WP8

An object reference is required for the non-static field, method, or property 'MathApp2.AppSettings.RadioButton3Setting.get

是的MainPage包含我试图打开的TextBlocks和应用程序的第1页关闭。我使用Xaml创建它们,而不是使用C#代码本身。 AppSettings是一个非常类似于此代码的类:http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff769510(v=vs.105).aspx Question中的代码位于包含Radibuttons的应用程序的第2页(设置页面)上。

我想我需要将MainPage和AppSettings的一个实例传递给第2页(设置页)?

任何帮助将不胜感激。

获取有关该代码的所有带星行错误:

private void radioButton3_Checked(object sender, EventArgs e) 
{ 
    if (AppSettings.RadioButton3Setting == true) * 
    { 
     MainPage.TextBlock5.Visible = true;  * 
     MainPage.TextBlock6.Visible = true;  * 
     MainPage.TextBlock7.Visible = true;  * 
     MainPage.TextBlock8.Visible = true;  * 
    } 
    else 
    { 
     MainPage.TextBlock5.Visible = false;  * 
     MainPage.TextBlock6.Visible = false;  * 
     MainPage.TextBlock7.Visible = false;  * 
     MainPage.TextBlock8.Visible = false;  * 
    } 
} 
+0

为什么是方法静态?如果它位于同一视图背后的代码中,请删除静态并直接使用控件。 TextBlock6.Visible –

+0

它不是我忘记采取,我发布之前 – user3334807

+0

我猜'MainPage'是页的类名称。如果这些代码位于'MainPage'中,请尝试移除'MainPage',使它变成:'TextBlock5.Visible = true;'并查看错误是否消失。 – har07

回答

0

从错误信息,看来AppSettings是你不得不在某些时候实例化一个类,但现在你想访问属性就好像它是静态的。

如果您创建的AppSettings一个实例,使用来代替:

if (myInstanceOfAppSettings.RadioButton3Setting == true) 

这同样适用于MainPage。这些TextBlock控件也只能在MainPage的实例中访问,但您正在访问它们,就好像它们是静态的。

假设TextBlock控件与该点击事件在同一个窗口中,只需从每行的开头删除MainPage.即可。

如果TextBlock控制是在另一个窗口中,你已经通过它的一个实例到任何窗口你已经张贴在你的问题,使用该实例,而不是:

someInstanceOfMainPage.TextBlock5.Visible = true; 
someInstanceOfMainPage.TextBlock6.Visible = true; 
+0

我想我需要创建一个AppSettings和MainPage的实例,但我不知道如何做到这一点 – user3334807