Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 主窗口加载的isn';在我的WPF应用程序上未触发_C#_Wpf_Visual Studio 2010 - Fatal编程技术网

C# 主窗口加载的isn';在我的WPF应用程序上未触发

C# 主窗口加载的isn';在我的WPF应用程序上未触发,c#,wpf,visual-studio-2010,C#,Wpf,Visual Studio 2010,我目前正在学习Pluralsight C#Fundamentals:Part 1,在类和对象部分,视频指示我在Visual Studio中创建一个新的WPF应用程序并填写代码。这将导致以下结果 namespace WpfApplication1 { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainW

我目前正在学习
Pluralsight C#Fundamentals:Part 1
,在
类和对象
部分,视频指示我在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;
        }
    }
}
命名空间WpfApplication1
{
/// 
///MainWindow.xaml的交互逻辑
/// 
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
}
已加载无效主窗口(对象发送器、路由目标)
{
员工e1=新员工(“Ash”);
员工e2=新员工(“Lee”);
Output.Text=e1.Name+“”+e2.Name;
}
}
}
Employee基本上是一个虚拟类,它是用单个实例变量
Name
定义的,以演示构造函数是如何工作的

在我的
main窗口中还有一个名为
Output
TextBlock
,我正试图在代码的最后一行更新它

最初,我在构造函数
MainWindow
中加载了
MainWindow\u中包含的代码,教程说这是一个糟糕的做法,应该看起来像我的第一个代码片段

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

教程过时了吗?我运行的版本不对吗?它在Beta版中改变了吗


谢谢。

请确保已加载的事件映射到主窗口\u已加载到XAML for MainWindow中

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


打开MainWindow.xaml(不是MainWindow.xaml.cs),单击窗口(确保没有选择任何控件),打开属性框(我相信F4会这样做),单击属性框中的事件选项卡,查找已加载,并确保已映射到MainWindow\u已加载(如果为空,您应该能够选择已经存在的订阅)

您可能缺少已加载的
事件的实际订阅,您可以通过两种方式修复此问题:

XAML:


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

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

我丢失了Loaded=“Window\u Loaded”在我的MainWindow.xaml中。您可能会在designer视图下方的xaml中的第8行看到它。我还在WPF中使用Pluralsight程序处理许多不同的事情。Dispatcher和backgroundWorker在重载WPF应用程序中都是必不可少的,就像PLC一样。UI中基于事件的任务和委托对于窗口是相同的Loaded与on_click事件完全相同,只是在加载时触发。

这是一种边缘情况。但你们中的一个可能和我一样“有创意”…如果您有WPF类的构造函数,则会意外忽略对InitializeComponent()的调用这将导致Windows#u Load事件停止工作。

您是否订阅Windows的
Loaded
事件…?我是C#和VS2010的新手,您能帮我介绍一下吗?打开MainWindow.xaml(而不是MainWindow.xaml.cs),单击窗口(确保未选择任何控件),打开属性框(我相信F4会做到这一点),单击属性框中的事件选项卡,查找已加载,并确保已映射到MainWindow_Loaded(如果为空,您应该能够选择您已经存在的一个)。谢谢你的回复。一旦我有了一些google foo可以找到的关键词。因为有几个正确的答案,我会选择你的作为解决方案,因为你首先回答了。就是这样!我不知道为什么当我第一次双击加载事件的文本输入时,它没有保持我的
窗口加载当文本框为空时,它进行了e-click,创建了一个新的
Window\u-Loaded\u 1
方法,因此将文本框的内容替换为
Window\u-Loaded
,然后双击以确保它找到了正确的方法。
public MainWindow()
{
    InitializeComponent();
    Loaded += MainWindow_Loaded;
}
public MainWindow()
{
    Loaded += MainWindow_Loaded
    InitializeComponent();
}