C#-WPF的启动函数和启动入口
之前在自动化设备的上位机控制系统的时候,一直用MFC编程,用了大概4年多,MFC编程上位机工作量大,容易导致系统不稳定,对人员的要求很高,曾经招聘了深圳某大学的硕士研究生,写简单的界面,愣是花了好几个月的时间,最终的结果是项目超时,并导致失败!
天下武功,唯快不破。如何使上位机开发足够快速?一直是我思考的问题,用过开源的界面库,使界面与界面逻辑分离,比如DuiLib,发现这个也是个坑爹的玩意儿,开发工具很差劲,对人员的要求更高,至少要求他们再去时序开源库的内部实现原理,然后调用它的API接口,在项目的时间上,更不划算。
后面综合考虑,使用了C#和WPF。由于从MFC转到WPF,对WPF必须尽快的熟悉,并做到能开发现有的工作,于是,匆匆的,又来学习WPF了。
打开WPF,新建一个工程,找呀找,发现没有入口函数,于是就想,我该在哪里找到入口函数呢?
发现,在App.Xaml文件中,他定义了一个入口Window1.xaml;可以进入Window1的构造函数。
那么我就尝试着新建一个窗口,并将启动修改为Window2,即StartupUri=Window2.xml’’>。果然,意料之中,可以进入Window2的构造函数。
于是,我可以顺利的随意选择启动时的窗体了。但是,问题来了,我启动的时候,并不想直接进入窗体的构造函数,那我该怎么办?有没有办法进入自己写的Main()函数的入口? WPF自己的入口函数又在哪里呢?考虑到入口是从APP.cs进入的,那我自己在该类里面加入一个Main函数试试
将xaml的入口语句改为 StartupUri=Main’’> ,编译无错误,运行后发现找不到入口
我嘞个去,这样不行啊。于是找呀找,发现在工程设置那里,有个一个启动对象很显眼,App是一个窗体无关的类,于是自己添加一个类Entrance.cs,命名为Program, 再去看看启动对象,果然增加了一个类Program,如下图。
选中Program选项框,在该类里面增加一个函数
namespace TestWPF
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
TestWPF.App app = new TestWPF.App();
app.InitializeComponent();
Window1 windows = new Window1();
app.MainWindow = windows;
app.Run();
}
}
}
xaml的入口语句改依旧是 StartupUri=Main’’> ,编译,运行,成功!!