2010-10-29 41 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的名稱)中的實例來設置屬性。

相關問題