我目前正在关注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
定义,以演示构造函数的工作方式。
我的TextBlock
中还有一个名为MainWindow.xaml
的{{1}}我试图在代码的最后一行更新。
最初我在构造函数Output
中包含MainWindow_Loaded
中的代码,教程说这是不好的做法,它应该看起来像我的第一个代码段。
然而,这会阻止应用程序正常工作。我的问题是什么问题?
教程是否过时了?我运行的是错误的版本吗?它在Beta中有变化吗?
感谢。
答案 0 :(得分:26)
确保Loaded事件映射到MainWindow的XAML中的MainWindow_Loaded。
编辑:将我的评论移到答案中,因为它似乎更有帮助:
打开MainWindow.xaml(不是MainWindow.xaml.cs),单击窗口(确保没有选择其中一个控件),打开属性框(我相信F4会这样做),点击在属性框的事件选项卡上,找到已加载并确保已映射到MainWindow_Loaded(如果它是空白的,您应该能够选择已存在的那个)
答案 1 :(得分:8)
如果您想以编程方式执行此操作,可以使用:
public MainWindow()
{
Loaded += MainWindow_Loaded
InitializeComponent();
}
答案 2 :(得分:6)
您可能错过了对Loaded
事件的实际订阅,您可以通过两种方式解决此问题:
XAML:
<Window ... Loaded="MainWindow_Loaded">
代码背后,例如。在构造函数中:
public MainWindow()
{
InitializeComponent();
Loaded += MainWindow_Loaded;
}
答案 3 :(得分:0)
我缺少Loaded =&#34; Window_Loaded&#34;在我的MainWindow.xaml中。您可能会在设计器视图下方的xaml中的第8行看到它。我也在WPF中使用Pluralsight程序来处理许多不同的事情。 Dispatcher和backgroundWorker对于重载WPF应用程序都很重要,就像PLC一样。 UI的基于事件的任务和委托对于窗口是相同的。 Loaded与on_click事件完全一样,除了加载火灾。
答案 4 :(得分:0)
这是一种边缘情况。但是你们当中的一个人可能和我一样“具有创造力” ...如果您有WPF类的构造函数,则会意外忽略对InitializeComponent()的调用,这将导致Windows_Load事件停止工作。