2010-10-29 44 views
0

我最近在一个更大的项目中遇到了一些问题,但为了解决这个问题,我用两个令人难以置信的基本文件制作了一个新的解决方案。它是一个WPF C#项目,主窗口包含一个按钮,以及一个包含文本块的用户控件。我已经将它们链接到了Blend中,这样当我点击按钮时,usercontrol就会出现。但是,当我添加代码以更改来自主窗口的usercontrol的文本块中的文本时,它给了我这个错误:非静态字段,方法或属性需要对象引用TestingUserControls.TestControl.sampleText.get'C#,UserControls:我无法修改txtBlock.Text,它给出了“非静态方法需要的对象引用”错误!

我喜欢用户控件,我们在整个项目中都使用它们,但由于某种原因,我无法让它们正常工作。

为我的用户的代码是这样的:

public TestControl() 
     { 
      this.InitializeComponent(); 
     } 

     public string sampleText 
     { 
      get { return blkTest.Text; } 
      set { blkTest.Text = value; } 
     } 

主窗口中的代码是这样的:

public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, System.Windows.RoutedEventArgs e) 
     { 
      TestControl.sampleText.set("Sup"); 
     } 

回答

0

这里有两个问题:

  1. 您正在尝试像使用静态属性一样使用实例属性。
  2. 您用来调用属性设置器的语法不正确。

确保您参考TestControl实例。例如,可以使用WPF设计拖动表示从工具箱到主窗口中的控制的图标,然后改变处理程序的身体:

testControl1.sampleText = "Sup"; 

在这种情况下,testControl1是场,它引用了你的控件的一个实例。

+0

说实话,我在谷歌周围挖了一段时间,试图找到答案后,我改变了我的代码。我确定它没有更好的,但最初我没有在用户控件和主窗口中我有“blkTest.Text =”测试!!!!“ – zack 2010-10-29 05:13:00

+0

@zack:问题仍然存在? – Ani 2010-10-29 05:20:17

+0

不,你只是修复了整个一周都让我头痛,我的小组和我一直在试图弄清楚为什么我们无法在用户控件上设置数据,现在我们知道了,我不敢相信它太简单了!感谢您的快速帮助。 – zack 2010-10-29 05:23:02

0

你的问题已经有您正在寻找....

“是必需的非静态字段,方法或属性TestingUserControls.TestControl.sampleText.get“的对象引用”

答案

您正尝试使用类型名称(而不是实例)访问对象的非静态属性。

相反,尝试使用TestControl(xaml的名称)中的实例来设置属性。

相关问题