WPF入门教程系列(3)----Application介绍

在上一篇文章中,我们简单的介绍了WPF工程的创建及其基本环境的搭建,并简单的使用了一个ListView控件,本来接下来应该讲解为该控件绑定数据,由于我也是边学边写的博客,所以期间会遇到很多问题,因此会根据自己所遇到的问题来进行学习。接下来我决定从基础知识学起。今天看了大佬的博客,所以我们今天就来学习一下Application。

一.Application介绍

WPF和WinForm 很相似, WPF与WinForm一样有一个 Application对象来进行一些全局的行为和操作,并且每个 Domain (应用程序域)中仅且只有一个 Application 实例存在。和 WinForm 不同的是WPF Application默认由两部分组成 : App.xaml 和 App.xaml.cs,这有点类似于 Asp.Net WebForm,将定义和行为代码相分离。

微软把WPF中经常使用的功能都封装在 Application 类中了。 Application 类具体有以下功能: 

 二.WPF应用程序的启动

 

  • 跟踪应用程序的生存期并与之交互。 
  • 检索和处理命令行参数。 
  • 检测和响应未经处理的异常。 
  • 共享应用程序范围的属性和资源。 
  • 管理独立应用程序中的窗口。 
  • 跟踪和管理导航。

关于如何在Visual Studio中创建一个“WPF应用程序”,前面的文章中已经说过了。请参见https://blog.csdn.net/junjunjiao0911/article/details/84541354

1、在Visual Studio 2015中创建一个“WPF应用程序”,使用App.xaml文件定义启动应用程序。XAML从严格意义上说并不是一个纯粹的 XML 格式文件,它更像是一种 DSL(Domain Specific Language,领域特定语言),它的所有定义都会由编译器最后编译成代码。

2、当然,如果你习惯了把启动写在代码中。你也可以跟WinForm中一样,在类中定义一个Main方法来实现对WPF应用程序的启动。第一步:如下图,在“解决方案资源管理器”中使用鼠标左键选中App.xaml文件,然后鼠标右键,弹出“弹出菜单—》从项目中排除”,这样就在项目中去掉了我们刚才建立的App.xaml文件。

第二步:现在中添加一个新类,类名为App.cs。如下图。在“解决方案资源管理器”中使用鼠标左键选中“WpfApp1”项目,然后点击鼠标右键,弹出“弹出菜单”,按下图中所示操作。

第三步:在弹出的“添加新项”界面中,选中“类”,把名称修改为“App.cs”。如下图。

第四步:在“解决方案资源管理器”中双击App.cs(如下图),打开文件,然后可以分别写入以下三种方式的代码,进行启动效果的调试。

第一种启动应用程序的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace WpfApp1
{
    class App
    {
     [STAThread]
     static void Main()
        {
            // 定义Application对象作为整个应用程序入口  
            Application app = new Application();
            // 方法一:调用Run方法 ,这种方式跟winform的调用一样
            MainWindow win = new MainWindow();//窗口实例化
            app.Run(win);
        }
    }
}

 初次学习WPF,我在这个过程中遇到了一个问题:实例化一个Application对象时会告诉你“未能找到类型或命名空间名“Application”,这时需要加上using System.Windows;问题会得到解决。由于我用的是VS2015,可能会有这个问题,其他版本可能不存在设个问题。

第二种启动应用程序的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;

namespace WpfApp1
{
    class App
    {
     [STAThread]
     static void Main()
        {
            // 定义Application对象作为整个应用程序入口  
            Application app = new Application();

            //指定Application对象的MainWindow属性为启动窗体,然后调用无参数的Run方法  
            MainWindow win = new MainWindow();
            app.MainWindow=win;

            //显示窗体
            win.Show();
            app.Run();
        }
    }
}

第三种启动应用程序的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;

namespace WpfApp1
{
    class App
    {
     [STAThread]
     static void Main()
        {
            // 定义Application对象作为整个应用程序入口  
            Application app = new Application();

            // 通过Url的方式启动
            app.StartupUri = new Uri("MainWindow.xaml", UriKind.Relative);
            app.Run();
        }
    }
}

这里Url中的***.xaml不可以随意定义,必须和工程中的名字一致,比如我把原来的MainWindow.xaml改成了windowgrid.xaml,出现了如下问题:

最后的执行结果如下图

 

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值