ELMAGLAYA Ответов: 2

Я не могу использовать метки.объект содержимого, в разделе личности класса. Пожалуйста, помогите мне.


Я очень сожалею об этом идиотском вопросе. Я как ребенок в программировании на C#. Не могли бы вы помочь мне, как я могу вывести свой вывод, вызвав свой метод в классе Person с помощью объекта label.content, но это выглядит невозможным. Пожалуйста, смотрите мой код ниже.

Что я уже пробовал:

пространство имен myClassPractice
{
публичный частичный класс MainWindow: Window
{
публичное главное окно()
{
метод InitializeComponent();
}

частная button_click появилась недействительным(объект отправителя, RoutedEventArgs е)
{
Человек сотрудник = новый человек();
работник.Фамилия = " Ньюманн";
работник.FirstName = " Джеймс";
работник.Спящий();
}
}
}
класс person
{
общественного строка имя;
общественного строка фамилия;

общественного недействительными спать()
{
этикетка.Content=FirstName + " is sleeping!"); / / похоже, я не могу использовать здесь объект label.content.
}

}

2 Ответов

Рейтинг:
8

Suvendu Shekhar Giri

Я считаю, что это неправильное место для установки свойства метки, хотя я и не являюсь разработчиком WPF. Ваш класс Person должен быть независим от пользовательского интерфейса и частичного класса codebehind, именно так мы отделяем бизнес-уровень и уровень презентации. У него есть свои преимущества, и вы можете искать в интернете более подробную информацию.

Есть способы, которыми вы можете удалить ошибки, сделав очень большое изменение в вашем существующем коде, но это не рекомендуется. Итак, проверьте следующий подход, который, по моему мнению, предлагает лучший подход -
Метод:

public string Sleeping()
{
   return FirstName + "is sleeping!";
}

и во время звонка вы можете сделать что-то вроде-
label.Content=employee.Sleeping();


Надеюсь, это поможет :)


ELMAGLAYA

Теперь это имеет для меня смысл. Спасибо.

Рейтинг:
16

OriginalGriff

Вы не можете использовать ярлык.Содержание там, потому что его не существует!
label не является частью класса Person, поэтому вы не можете получить к нему доступ. (Очевидно, что он не является частью какого - либо класса в вашей программе, так как вы нигде не показываете, что он объявлен, но я предполагаю, что вы добавили его в свой класс MainWindow.)

Подумайте об этом: ваше окно показывает элементы управления-как и Ваша метка-и может содержать несколько экземпляров человека: "Джеймс Ньюманн", "Лоренцо Сьело Маглая-младший", "оригинальный Грифф", ни один из которых не знает о существовании вашего окна. Но...у вас может быть второе окно, которое вы хотите использовать для отображения всех деталей для конкретного человека, как только вы выбрали их в своем главном окне. И если они не знают, в каком окне они должны отображаться, как они могут "решить", на какой этикетке отображать?

То, что вы на самом деле хотите сделать, это вернуть строку из вашего класса Person, которая указывает, спит ли этот человек:

public bool IsAsleep { get; set; }
public string Sleeping()
   {
   if (IsAsleep)
      {
      return FirstName + " is sleeping!";
      }
   return FirstName + " is awake.");
   }

Если ваше главное окно вы можете использовать его:
private void button_Click(object sender, RoutedEventArgs e)
    {
    Person employee = new Person();
    employee.LastName = "Newmann";
    employee.FirstName = "James";
    employee.IsAsleep = true;
    label.Content = employee.Sleeping();
    }


Кстати: в будущем помечайте свои вопросы немного более тщательно - это специфично для WPF и должно иметь тег WPF.


ELMAGLAYA

Спасибо за подробное объяснение. Я действительно ценю это.

OriginalGriff

Пожалуйста!

Suvendu Shekhar Giri

Просто идеальный. #приветствовать
5ед !