C #, UserControls: я не могу изменить txtBlock.Text, он выдает «ссылка на объект требуется для нестатического метода»! - PullRequest
0 голосов
/ 29 октября 2010

У меня недавно были некоторые проблемы с большим проектом, но, пытаясь решить эту проблему, я нашел новое решение, используя всего два невероятно простых файла.Это проект WPF C # с главным окном, содержащим кнопку, и пользовательским элементом управления, содержащим текстовый блок.Я уже связал их в Blend, так что когда я нажимаю кнопку, появляется пользовательский контроль.Однако, когда я добавил код для изменения текста в текстовом блоке usercontrol из главного окна, это выдает мне эту ошибку: ссылка на объект требуется для нестатического поля, метода или свойства TestingUserControls.TestControl.sampleText.get '

Мне нравятся usercontrols, и мы используем их все в нашем проекте, но по какой-то причине я просто не могу заставить их работать хорошо.

Код для моего usercontrol такой:

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");
        }

Ответы [ 2 ]

0 голосов
/ 29 октября 2010

На ваш вопрос уже есть ответ, который вы ищете ....

"Ссылка на объект требуется для нестатического поля, метода или свойства TestingUserControls.TestControl.sampleText.get '"

Вы пытаетесь получить доступ к нестатическому свойству объекта, используя имя типа (не экземпляр).

Скорее попробуйте установить свойство, используя экземпляр TestControl (x: Name в xaml).

0 голосов
/ 29 октября 2010

Здесь есть два вопроса:

  1. Вы пытаетесь использовать свойство экземпляра, как если бы оно было статическим свойством.
  2. Неправильный синтаксис, который вы используете для вызова установщика свойств.

Убедитесь, что у вас есть ссылка на экземпляр из TestControl. Например, вы можете использовать дизайнер WPF, чтобы перетащить значок, представляющий элемент управления, из панели инструментов в главное окно, а затем изменить тело обработчика на:

testControl1.sampleText = "Sup";

В этом случае testControl1 - это поле, которое ссылается на экземпляр вашего элемента управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...