第一章:初识WPF,XAML,WPF控件

前言

总目录

本章主要介绍WPF与XAML,以及WPF的控件的基本使用,让大家先初步认识WPF。
关于WPF的官方资料:官方WPF文档1 、官方WPF文档2、官方WPF文档3、官方WPF文档4


一、WPF概述

WPF(Windows Presentation Foundation):是一个可创建桌面客户端应用程序的 UI 框架

1、WPF可以创建适用于 Windows 且具有非凡视觉效果的桌面客户端应用程序
2、WPF 的核心是一个与分辨率无关且基于矢量的呈现引擎,旨在充分利用现代图形硬件。 WPF
通过一套完善的应用程序开发功能对该核心进行了扩展,这些功能包括可扩展应用程序标记语言
(XAML)、控件、数据绑定、布局、二维和三维图形、动画、样式、模板、文档、媒体、文本和版式。 WPF 属于 .NET,因此可以生成整合.NET API 其他元素的应用程序。
3、WPF有两种实现:

  • .NET 版本,可在.NET5或更高版本运行,最低需要 Visual Studio 2019 版本 16.8
  • .NET Framework 4 版本,受 Visual Studio 2019 和 Visual Studio 2017 支持的 WPF 的 .NET Framework 实现

4、WPF 是大部分位于 System.Windows 命名空间中的 .NET 类型的一个子集存在。
5、.NET5.0为WPF提供优于 .NET Framework的新功能和增强功能,尽管.NET是跨平台的,但是WPF并不是,仅在Windows上运行
6、WPF使用XAML标记实现应用程序的外观,同时使用托管编程语言(代码隐藏)来实现其行为,外观和行为的分离可以降低耦合,降低开发和维护成本,提高开发效率

上述内容简单理解:
WPF是可以基于.NET/.NET Framework平台上,使用XAML高效开发精美桌面程序的一个UI框架。

二、创建一个WPF项目

上面我们知道WPF是可以做酷炫效果的桌面程序,具体怎么敲代码先不用管,原理啥的也不用管,我们先创建一个项目,看看WPF到底有些个什么?

1、创建项目

打开VS=》文件=》新建=》项目=》找到WPF应用程序=》确定即可(不同vs版本可能稍有不同)
第一章:初识WPF,XAML,WPF控件_第1张图片

2、认识初始项目结构

第一章:初识WPF,XAML,WPF控件_第2张图片
项目结构上:
(1)app.config 配置文件:主要是一些连接字符串 或 应用程序配置等信息
(2)App.xaml :设置应用程序启动与配置系统资源(样式,合并资源字典等)
(3)App.xaml.cs :是App.xaml的后台类文件
(4)MainWindow.xaml :WPF的XAML界面文件
(5)MainWindow.xaml.cs:.xaml对应的后台业务逻辑代码文件

修改App.xaml中的StartupUri 属性则可以修改启动的窗口,如果将MainWindow修改为Window,那么项目启动的界面将会显示Window1

工作界面上:
有四个区域:最左边是控件区,中间是页面的展示区+代码区,最右边就是项目结构的目录。
页面上需要显示什么控件,最简单的方式,我们从控件区点击鼠标选择一个拖到页面展示区即可
MainWindow.xaml文件里面就是页面展示区+代码区的内容

3、简单试用一下

(1) 拖个button到页面上,其他不管,修改/增加一下属性 ,如下

<Button Content="Button" HorizontalAlignment="Center" VerticalAlignment="Center" Width="100" Height="100"/>

(2) 双击Button按钮,会发现跳转到MainWindow.xaml.cs文件内

(3) 在button的点击事件中,输出My First Wpf弹出窗口

private void Button_Click(object sender, RoutedEventArgs e)
{
     MessageBox.Show("My First Wpf");
}

(4) 点击【启动】,启动项目
第一章:初识WPF,XAML,WPF控件_第3张图片
至此我们大概对WPF有了个初步的印象了。

4、设置启动和关闭应用程序

是日常开发时这个也是对应用程序常做的两个操作

1)设置/修改WPF启动窗口**

方式一:使用App.xaml文件中的StartupUri=“窗体路径”

方式二:后台代码修改,如下图:第一章:初识WPF,XAML,WPF控件_第4张图片

2)通过代码关闭应用程序

因为在后续开发过程中会使用自己定义样式的窗体,将不用原始样式的窗体,那么就需要自己写关闭按钮的事件:如下所示

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            App.Current.Shutdown();
            //Environment.Exit(0);
        }

那么App.Current.Shutdown()和Environment.Exit(0)有什么区别呢?
如果在应用程序中有前台线程,那么使用Environment.Exit(0)会将前台线程和UI线程一并关闭,而App.Current.Shutdown()只会关闭UI线程。
如果在应用程序中都是后台线程,那么两者的效果一样。

三、XAML

1、基本概念

XAML可扩展应用程序标记语言,是一种基于XML的声明性标记语言,以声明形式实现应用程序的外观。你可以在声明性 XAML 标记中创建可见的 UI 元素(如:窗口,对话框,页面和用户控件,并填充控件、形状和图形)等,然后使用代码隐藏文件(这些文件通过分部类定义与标记相联接)将 UI 定义与运行时逻辑相分离。

2、通过案例了解XAML

1)XAML的基本使用

上面新建项目案例中的代码:

<Window x:Class="WpfTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfTest"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Button Content="Button" HorizontalAlignment="Center" VerticalAlignment="Center" Width="100" Height="100" Click="Button_Click"/>
    Grid>
Window>

(1)案例代码中使用尖括号包括起来的Window,Grid,Button都是XAML标记标签,XAML中有双标签形式如上面的Window和Grid,也有单标签的形式ButtonXAML中就是通过这种方式声明一个控件元素标签

(2)XAML中可以通过Width="100" Height="100"等属性设置控件外观的大小,当然也可设置其他的属性更改控件的其他外观,XAML不同的控件元素,会有大多数控件共有的基本属性,也有自己特有的属性,都可通过这种方式去设置控件的属性,以达到修改控件外观的目的。

(3)一个XAML文件中只可有一个根元素,如上面案例的Window 即是根元素
第一章:初识WPF,XAML,WPF控件_第5张图片
如上图所示:当我们出现根元素有两个或以上就会提示错误信息

(4)当用XAML声明了Window 和 Button两个元素的时候,控件元素 Window 和 Button 各映射到一个类名,该类由 WPF 定义并且属于 WPF 程序集。

2)xmlns:&x: & 自定义命名空间&mc:

上面Grid,Button都是控件对象元素,那Window元素中的还有好几行xmlns又是什么呢?

x:Class="WpfTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfTest"
        mc:Ignorable="d"

(1)xmlns 是什么?

在xaml文件中,我们通过应用于元素的xmlns 属性声明XAML命名空间及其映射。
就好比我们在写.NET代码的时候引用一个工具类,可以调用工具类的属性和方法,在类中我们一般使用using 来引用命名空间,那么在xaml中使用的是xmlns。

(2)xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

声明默认映射整个 WPF 客户端/框架 XAML 命名空间

在默认的 XAML 命名空间中,可以不使用前缀指定标记中的对象元素。如果没有这引用,那么我们将无法用**

你可能感兴趣的:(WPF,wpf,windows)