MainWindow_Loaded在我的WPF应用程序上没有触发
本文关键字:程序上 应用程序 应用 Loaded 我的 WPF MainWindow | 更新日期: 2023-09-27 18:14:39
我目前正在跟随Pluralsight C# Fundamentals: Part 1
和Classes 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的XAML中的MainWindow_Loaded
编辑:把我下面的评论移到答案中,因为它似乎更有帮助:打开主窗口。xaml(不是MainWindow.xaml.cs),单击窗口(确保您没有选择的控件之一),打开属性框(我相信F4会这样做),单击属性框中的事件选项卡,找到Loaded并确保映射到MainWindow_Loaded(如果它是空白的,你应该能够选择你已经存在的)
如果您想通过编程实现,可以使用:
public MainWindow()
{
Loaded += MainWindow_Loaded
InitializeComponent();
}
您可能错过了Loaded
事件的实际订阅,您可以通过两种方式修复:
<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事件停止工作。