我的WPF应用程序未触发MainWindow_Loaded

Ash*_*Ash 12 c# wpf visual-studio-2010

我目前正在跟随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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Employee基本上是一个虚拟类,它已经用单个实例变量定义,Name以演示构造函数的工作方式.

TextBlock在我的MainWindow.xaml调用中还有一个我Output试图在代码的最后一行更新.

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

但是这会阻止应用程序正常运行 我的问题是什么问题?

教程是否过时了?我运行的是错误的版本吗?它在Beta中有所改变吗?

谢谢.

Bla*_*ICE 27

确保在XAML for MainWindow中将Loaded事件映射到MainWindow_Loaded.

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

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

  • 打开MainWindow.xaml(不是MainWindow.xaml.cs),单击窗口(确保没有选择其中一个控件),打开属性框(我相信F4会这样做),点击事件在属性框中选项卡,找到已加载并确保已映射到MainWindow_Loaded(如果它是空白的,您应该能够选择已存在的那个). (5认同)

JRo*_*han 8

如果您想以编程方式执行此操作,可以使用:

public MainWindow()
{
    Loaded += MainWindow_Loaded
    InitializeComponent();
}
Run Code Online (Sandbox Code Playgroud)


k.m*_*k.m 6

您可能缺少对Loaded事件的实际订阅,您可以通过两种方式解决此问题:

XAML:

<Window ... Loaded="MainWindow_Loaded">
Run Code Online (Sandbox Code Playgroud)

代码背后,例如.在构造函数中:

public MainWindow()
{
    InitializeComponent();
    Loaded += MainWindow_Loaded;
}
Run Code Online (Sandbox Code Playgroud)