MainWindow_Loaded не запускается в моем приложении WPF - PullRequest
12 голосов
/ 13 ноября 2011

В настоящее время я следую за Pluralsight C# Fundamentals: Part 1, а в разделе Classes and Objects видео инструктирует меня создать новое приложение WPF в Visual Studio и заполнить код. Это приводит к следующему.

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            Employee e1 = new Employee("Ash");

            Employee e2 = new Employee("Lee");

            Output.Text = e1.Name + "" + e2.Name;
        }
    }
}

Сотрудник - это в основном фиктивный класс, который был определен с помощью одной переменной экземпляра Name, чтобы продемонстрировать, как работают конструкторы.

В моем MainWindow.xaml есть также TextBlock с именем Output, который я пытаюсь обновить в последней строке кода.

Изначально у меня был код, содержащийся в MainWindow_Loaded в конструкторе MainWindow, в руководстве говорится, что это плохая практика, и он должен выглядеть как мой первый фрагмент кода.

Однако это останавливает работу приложения. У меня вопрос в чем проблема?

Урок устарел? Я использую не ту версию? Было ли это изменено в бета-версии?

Спасибо.

Ответы [ 4 ]

27 голосов
/ 13 ноября 2011

Убедитесь, что событие Loaded сопоставлено с MainWindow_Loaded в XAML для MainWindow.

Редактировать: Переместить мой комментарий ниже в ответ, так как это кажется более полезным:

открыть MainWindow.xaml (не MainWindow.xaml.cs), нажмите на окно (убедитесь, что у вас не выбран один из элементов управления), откройте окно свойств (я думаю, F4 сделает это), нажмите на вкладку событий вв окне свойств найдите Loaded и убедитесь, что он сопоставлен с MainWindow_Loaded (если он пуст, вы сможете выбрать уже существующий)

8 голосов
/ 13 ноября 2011

Если вы хотите сделать это программно, вы можете использовать:

public MainWindow()
{
    Loaded += MainWindow_Loaded
    InitializeComponent();
}
6 голосов
/ 13 ноября 2011

Возможно, вам не хватает фактической подписки на событие Loaded, вы можете исправить это двумя способами:

XAML:

<Window ... Loaded="MainWindow_Loaded">

Код позади, например.в конструкторе:

public MainWindow()
{
    InitializeComponent();
    Loaded += MainWindow_Loaded;
}
0 голосов
/ 08 декабря 2016

Мне не хватало Loaded = "Window_Loaded" в моем MainWindow.xaml. Вы, вероятно, увидите это в строке 8 в xaml под представлением конструктора. Я также использую программу Pluralsight для множества разных вещей в WPF. Dispatcher и backgroundWorker необходимы для сильно загруженных приложений WPF, например, для ПЛК. Задачи на основе событий и делегаты для пользовательского интерфейса одинаковы для окна. Loaded точно так же, как событие on_click, за исключением пожаров при загрузке.

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