MainWindow_Loaded在我的WPF应用程序上没有触发

本文关键字:程序上 应用程序 应用 Loaded 我的 WPF MainWindow | 更新日期: 2023-09-27 18:14:39

我目前正在跟随Pluralsight C# Fundamentals: Part 1Classes and Objects部分,视频指示我在Visual Studio中创建一个新的WPF应用程序并填写代码。结果如下:

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

Employee基本上是一个虚拟类,它被定义为一个单独的实例变量Name,以演示构造函数是如何工作的。

在我的MainWindow.xaml中也有一个TextBlock,称为Output,我试图在代码的最后一行更新。

最初我在构造函数MainWindow中包含MainWindow_Loaded中的代码,教程说这是不好的做法,它应该看起来像我的第一个代码片段。

但是这会使应用程序停止工作。我的问题是问题出在哪里?

教程过时了吗?我是否运行了错误的版本?测试版有改动吗?

谢谢。

MainWindow_Loaded在我的WPF应用程序上没有触发

确保已加载的事件映射到MainWindow的XAML中的MainWindow_Loaded

编辑:把我下面的评论移到答案中,因为它似乎更有帮助:

打开主窗口。xaml(不是MainWindow.xaml.cs),单击窗口(确保您没有选择的控件之一),打开属性框(我相信F4会这样做),单击属性框中的事件选项卡,找到Loaded并确保映射到MainWindow_Loaded(如果它是空白的,你应该能够选择你已经存在的)

如果您想通过编程实现,可以使用:

public MainWindow()
{
    Loaded += MainWindow_Loaded
    InitializeComponent();
}

您可能错过了Loaded事件的实际订阅,您可以通过两种方式修复:

XAML:

<Window ... Loaded="MainWindow_Loaded">

后面的代码,例如。在构造函数:

public MainWindow()
{
    InitializeComponent();
    Loaded += MainWindow_Loaded;
}

我在MainWindow.xaml中丢失了Loaded="Window_Loaded"。您可能会在设计器视图下面的xaml的第8行看到它。我还使用Pluralsight程序在WPF中做许多不同的事情。Dispatcher和backgroundWorker在重载的WPF应用程序中都是必不可少的,比如PLC。UI的基于事件的任务和委托与窗口相同。Loaded事件与on_click事件完全相似,只是在加载时触发。

这是一种边缘情况。但你们当中可能有人是"有创造力的"。像我……如果你有一个WPF类的构造函数,不小心忽略了对InitializeComponent()的调用,这将导致Windows_Load事件停止工作。

相关文章: