【问题标题】:editing XAML textbox not from MainPage class编辑不是来自 MainPage 类的 XAML 文本框
【发布时间】:2012-11-09 18:45:32
【问题描述】:

我有 MainPage 类,我可以使用此代码编辑 XAML 文本框的内容

box1.Text = "";

但是尝试从另一个类编辑文本框,下面的代码将不起作用

MainPage.box1.Text = "";

错误是“非静态字段、方法或属性‘class.MainPage.box1’需要对象引用 我已经尝试了所有方法,例如制作静态函数和在另一个类中创建新的 MainPage 对象,但没有任何效果

【问题讨论】:

标签: c# xaml textbox windows-phone


【解决方案1】:

XAML 文本框位于 MainPage.xaml/.cs 中

您的文本框值设置器属于某个 X 类。

您在以下语句中出错的原因是,box1 不是静态的,您需要 MainPage 的一个实例。

MainPage.box1.Text = "";

但不只是任何实例。您需要当前实例。所以类 X 中的方法,需要接收 MainPage.xaml.cs 类的“THIS”实例,然后改变 box1 的值。

函数调用:

X xobj=new X();
xobj.ChangeboxValue(this);

功能:

void ChangeboxValue(MainPage obj)
{
obj.box1.Text=""
}

【讨论】:

  • 谢谢!非常清楚地描述了它是如何工作的,我现在开始工作了
【解决方案2】:

您正试图在没有对象实例的情况下访问 MainPage 类的静态字段。

您需要一个 MainPage 类的实例才能像这样访问它:

MainPage myPage = new MainPage();
myPage.box1.Text = "";

【讨论】:

  • 我试过这个,应用程序因无效的跨线程访问而崩溃。将代码放入 Deployment.Current.Dispatcher.BeginInvoke(()=> 应用程序不会崩溃但文本框未编辑
  • 那么,在您的示例代码中包含更多上下文可能会有所帮助。
猜你喜欢
  • 2012-12-10
  • 1970-01-01
  • 2019-11-18
  • 1970-01-01
  • 1970-01-01
  • 2013-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多