ссылка на объект требуется для нестатического поля, метода или свойства



Хм, кажется, у меня проблема, в моем главном окне я пытаюсь сделать это:



    public static readonly DependencyProperty StudentIDProperty = DependencyProperty.Register("StudentID", typeof(String), typeof(LoginWindow), new PropertyMetadata(OnStudentIDChanged));

public string StudentID
{
get { return (string)GetValue(StudentIDProperty); }
set { SetValue(StudentIDProperty, value); }
}

static void OnStudentIDChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
(d as LoginWindow).OnStudentIDChanged(e); //
}


На другом окне у меня есть это:



MainWindow.StudentID = (String)((Button)sender).Tag;


Но я получаю ошибку:



An object reference is required for the non-static field, method, or property 'WpfApplication4.MainWindow.StudentID.get'


Кто-нибудь знает, как я могу это исправить? Это работает для моих пользовательских элементов управления, но не для других окон?

Мое главное окно на самом деле называется MainWindow, так что я, возможно, запутался.

899   3  

3 ответов:

Вам нужно установить StudentID на экземпляр класса MainWindow. Попробуйте

((MainWindow)Application.Current.MainWindow).StudentID = (String)((Button)sender).Tag;

Потому что MainWindow - это имя класса, а не экземпляр MainWindow. Вам нужно что-то вроде:

MainWindow mw = new MainWindow();
mw.StudentID = (String)((Button)sender).Tag;

Я пытался обновить TextBox в MainWindow из UserControl и получить ошибку

Error 1: An object reference is required for the non-static field, method, or property 

'WpfApplication1.MainWindow.textBox1'

Я решил эту ошибку, написав следующее:

//MainWindow.textBox1.Text = ""; //Error 1

((MainWindow)Application.Current.MainWindow).textBox1.Text = "";//This is OK!

Это было предложено Ритисом I

Comments

    Ничего не найдено.