【WPF学习笔记(一)】WPF应用程序的组成及Window类介绍

WPF应用程序的组成及Window类介绍

    • WPF应用程序的组成及Window类介绍
    • 前言
    • 正文
    • 1、WPF介绍
      • 1.1 什么是WPF
      • 1.2 WPF的特点
      • 1.3 WPF的控件分类
    • 2、XAML介绍
      • 2.1 XAML的定义
      • 2.2 XAML的特点
      • 2.3 XAML的命名空间
    • 3、WPF应用程序组成
      • 3.1 App.config
      • 3.2 App.xaml
      • 3.3 App.xaml.cs
      • 3.4 MainWindow.xaml
      • 3.5 MainWindow.xaml.cs
    • 4、Window类介绍
      • 4.1 标题 Title
      • 4.2 大小 Height、Width
      • 4.3 窗口是否具有任务栏按钮 ShowInTaskbar
      • 4.4 窗口首次出现位置 WindowStartupLocation
      • 4.5 窗口显示状态 WindowState
      • 4.6 是否设置为最顶层 Topmost
      • 4.7 设置窗体图标 Icon
      • 4.8 窗口的加载事件 Loaded

WPF应用程序的组成及Window类介绍

前言

WPF(Windows Presentation Foundation)作为微软推出的新一代图形呈现系统,为Windows 应用程序的开发带来了革命性的变化。它以其强大的界面设计能力和灵活的编程模型,成为了现代 Windows 桌面应用开发的首选框架。而 XAML(Extensible Application Markup Language),作为 WPF 的核心标记语言,使得界面的定义与业务逻辑的分离成为可能,极大地提高了开发效率和代码的可维护性。

本文将首先简要介绍 WPF 的基本概念及其优势,带领读者走进这个强大的图形呈现世界。接着,我们将深入探讨 XAML 的语法和用法,了解它是如何与 WPF 相互协作,共同构建出丰富多彩的用户界面。最后,我们将详细解析 WPF 应用程序的组成结构,特别是 Window 类的功能与应用,帮助读者更好地理解并掌握 WPF 应用程序的开发流程和关键技术。

通过阅读本文,相信会对 WPF 和 XAML 有更深入的了解,并能够在实际开发中灵活运用它们,创造出令人满意的 Windows 桌面应用程序。

正文

1、WPF介绍

1.1 什么是WPF

WPF (Windows Presentation Foundation),Windows 呈现基础,是基于Windows 的用户界面框架;.net framework3.0及以上版本的一部分,统一的编程模型、语言和框架,做到了界面设计与后端开发分离,支持多媒体、制作动画。

1.2 WPF的特点

  • 必须运行在.net framework 3.0及以上版本 ;
  • 呈现效果不受分辨率的影响,会自动识别显示器的分辨率而进行缩放;
  • 支持DirectX 3D技术,3D界面;
  • 可以做出更炫酷的界面;
  • 提供了.net UI框架,集成了矢量图形、流动文字支持、3D视觉效果和控件模型框架;
  • UI 与 业务逻辑彻底分离,UI:XAML语言进行描述,WPF引擎解释为对应的.NET对象;
  • 用户体验,部署方式的升级
  • 运行环境:XP、server2003及以后的Windows操作系统版本;
  • 任何一种.net语言:C# 、VB.net 都可以进行开发;
  • WPF 是数据来驱动 UI 的,数据是WPF的核心,处于主动地位,UI 从属于数据并表达数据; WinForm 是数据驱动;

1.3 WPF的控件分类

  • 布局控件 Panel;
  • 内容控件 ContentControl:只能容纳一个控件或布局控件;
  • 带标题的内容控件 :内容控件可以设置标题Header ,父类:HeaderedContentControl;
  • 条目控件 ItemControl:可以显示一列数据,数据类型一般相同;
  • 带标题的条目控件:条目控件可以设置标题Header ,父类:HeaderedItemControl;
  • 特殊内容控件:常用控件 TextBox、PasswordBox、TextBlock、Image等
  • 第三方WPF控件;

2、XAML介绍

2.1 XAML的定义

为构建应用程序用户界面而创建的一种新的“可扩展的应用程序标记语言”,提供了一种便于扩展和定位的语法来定义和程序业务扩及分离的用户界面

2.2 XAML的特点

  • 定义应用程序的界面元素;
  • 显示声明WPF资源(样式、模板、动画等);
  • 可扩展性(UI控件);

2.3 XAML的命名空间

XAML 与 .NET 程序语言一样,也是通过命名空间有效组织 XAML 内部的相关元素类

在这里插入图片描述

如果应用时,不带前缀,就来自于默认的命名空间;否则,就来自于带前缀的命名空间

命名空间的引用语法:xmlns:[前缀名]="命名空间描述"
自定义类或程序集映射语法:xmlns:[必选前缀]="clr-namespace:[命名空间];assembly=[程序集名称]"

注意:一个 XAML 文件至少要有两个命名空间:

  • 默认命名空间;
  • 带x前缀的命名空间;

3、WPF应用程序组成

在这里插入图片描述

3.1 App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration><startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup>
</configuration>

App.config :配置文件,包含 .NETFramework 的版本信息等;可以设置与应用程序相关的信息,比如与数据库的连接字符串的设置 connectionStrings,与系统相关的信息 appSettings 等;

  <connectionStrings></connectionStrings><appSettings></appSettings>

3.2 App.xaml

<Application x:Class="WpfTest.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:WpfTest"StartupUri="MainWindow.xaml"><Application.Resources></Application.Resources>
</Application>

App.xaml :设置应用程序起始文件,系统级的资源;

在这里插入图片描述
在这里插入图片描述

  1. x:Class="WpfTest.App" : 指定 XAML 文件所对应的后代代码文件的类;
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    :默认命名空间;
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" : 和编译相关的
    CLR 命名空间;
  4. StartupUri="MainWindow.xaml">:指定应用程序的起始文件;
  5. Application.Resources:定义整个WPF应用程序的相关资源;

例如,在项目目录下创建 Users 文件夹,并创建窗口文件 UserWindow.xaml,通过修改 App.xaml 文件设置应用程序起始文件

  1. 创建 Users 文件夹;
    在这里插入图片描述

  2. 创建 UserWindow.xaml 窗口;
    在这里插入图片描述

  3. 改写 App.xaml 文件的 StartupUri;

    <Application x:Class="WpfTest.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:WpfTest"StartupUri="Users/UserWindow.xaml"><Application.Resources></Application.Resources>
    </Application>
    

    在这里插入图片描述
    注意:是这种写法 "Users/UserWindow.xaml" 而不是 "Users.UserWindow.xaml"

  4. 运行应用程序;
    在这里插入图片描述

3.3 App.xaml.cs

App.xaml.cs :App.xaml 文件的后台类文件;

3.4 MainWindow.xaml

MainWindow.xaml :窗口文件,WPF应用程序界面与XAML设计文件;

3.5 MainWindow.xaml.cs

MainWindow.xaml.cs :MainWindow.xaml 文件的后台代码文件

4、Window类介绍

Window 类的父类:System.Windows

Window 是 ContentControl 内容控件,只能承载一个 Content;创建时默认的 Content 是 Grid ( 网格 行和列 布局控件)

4.1 标题 Title

Title="MainWindow"

4.2 大小 Height、Width

Height="450" Width="800"

4.3 窗口是否具有任务栏按钮 ShowInTaskbar

ShowInTaskbar="True"
  • True:显示任务栏按钮;
  • False:不显示任务栏按钮;

4.4 窗口首次出现位置 WindowStartupLocation

WindowStartupLocation="CenterScreen"
  • CenterOwner:
  • CenterScreen:屏幕中间
  • Manual:默认位置

4.5 窗口显示状态 WindowState

WindowState="Maximized"
  • Maximized:最大化
  • Minimized:最小化
  • Normal:原有尺寸

4.6 是否设置为最顶层 Topmost

 Topmost="True"
  • True:窗口设置为最顶层
  • False:窗口不设置为最顶层

4.7 设置窗体图标 Icon

Icon="imgs/icon.ico"

必须是 ico 文件
在这里插入图片描述
在这里插入图片描述

4.8 窗口的加载事件 Loaded

Loaded="Window_Loaded"

会在 cs 文件中自动生成 Window_Loaded 方法

        private void Window_Loaded(object sender, RoutedEventArgs e){}

还有其他的响应事件如:Closing、MouseBoubleClick、MouseLeftButtonClick、MouseLeftButtonUp、MouseRightButtonClick、MouseLeftButtonUp 等

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/832149.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务---feign调用服务

目录 Feign简介 Feign的作用 Feign的使用步骤 引入依赖 具体业务逻辑 配置日志 在其它服务中使用接口 接着上一篇博客&#xff0c;我们讲过了nacos的基础使用&#xff0c;知道它是注册服务用的&#xff0c;接下来我们我们思考如果一个服务需要调用另一个服务的接口信息&…

商城系统秒杀功能设计思想

业务特点 1、瞬时并发量大&#xff0c;秒杀时会有大量用户在同一时间进行抢购&#xff0c;瞬时并发访问量突增几倍、甚至几十倍以上 2、库存量少&#xff0c;一般秒杀活动商品量很少&#xff0c;这就导致了只有极少量用户能成功购买到。 3、业务和流程较为常见&#xff0c;一般…

【C++】学习笔记——vector_3

文章目录 七、vector3. vector的模拟实现4. vector实现代码整合 未完待续 七、vector 3. vector的模拟实现 上篇文章我们讲解了非常 玄幻 的拷贝构造函数&#xff0c;同样的方法&#xff0c;我们也能用这种方法来实现 赋值重载函数 。 void swap(vector<T>& v) {s…

libcity笔记:支持的数据

数据下载地址&#xff1a;Standard Dataset in LibCity - Google 云端硬盘 1 交通速度数据 数据名称地点时间出处 描述 METR_LA 美国洛杉矶 Mar. 1, 2012 ~ Jun. 27, 2012 GitHub - liyaguang/DCRNN: Implementation of Diffusion Convolutional Recurrent Neural Network i…

overflow:hidden对解决外边距塌陷的个人理解

外边距塌陷&#xff1a; 子元素的上外边距大于父元素的上外边距&#xff0c;导致边距折叠&#xff0c;取两者之间最大值&#xff0c;即子元素外边距&#xff0c;导致父元素上外边距失效。 解决办法&#xff1a;在父元素样式添加overflow:hidden;或者border:1px solid black;(不…

前端开发攻略---介绍HTML中的<dialog>标签,浏览器的原生弹框。

1、演示 2、介绍 <dialog> 标签用于定义对话框&#xff0c;即一个独立的窗口&#xff0c;通常用来显示对话框、提示框、确认框等弹出式内容。在对话框中&#xff0c;可以包含文本、表单元素、按钮等内容&#xff0c;用户可以和这些内容进行交互。 3、兼容性 4、示例代码 …

【C语言回顾】数据在内存中的存储

前言1. 概述2. 大小端字节序和字节序判断2.1 大端字节序&#xff08;Big-Endian&#xff09;2.2 小端字节序&#xff08;Little-Endian&#xff09;2.3 判断字节序的示例 3. 数据在内存中的存储3.1 整数在内存中的存储3.2 浮点数在内存中的存储 结语 ↓ 上期回顾: 【C语言回顾】…

【小菜鸟之---Ansible基础详解】

文章目录 1 【Ansible简介】1.1简介1.2 Ansible 特点1.3 Ansible的工作机制1.4Ansible任务工作模式 2【安装部署】2.1安装命令2.2 Ansible配置文件2.3主机清单配置2.4 基于ssh免密登录2.5常用命令 3【Ansible常用模块】3.1 ping模块3.2 shell模块3.3 command模块3.4 copy模块3.…

java如何实现协同过滤算法

协同过滤&#xff08;Collaborative Filtering&#xff09;是一种常用的推荐系统算法&#xff0c;主要分为两种类型&#xff1a;用户-用户协同过滤&#xff08;User-User Collaborative Filtering&#xff09;和物品-物品协同过滤&#xff08;Item-Item Collaborative Filterin…

webox微信群发器多少钱?电脑微信群发软件哪个好用?微信群发助手一次能发多少人?最强稳定群发器来袭

今天给大家推荐一款我们目前在使用的电脑群发工具WeBox&#xff0c;不仅可以无限多开&#xff0c;方便你同时管理多个账号&#xff0c;群发功能更是十分强大&#xff0c;轻松释放你的双手。 软件下载地址>>密码&#xff1a;4as1 WeBox群发功能 下载WeBox打开登录&#x…

Golang | Leetcode Golang题解之第70题爬楼梯

题目&#xff1a; 题解&#xff1a; func climbStairs(n int) int {sqrt5 : math.Sqrt(5)pow1 : math.Pow((1sqrt5)/2, float64(n1))pow2 : math.Pow((1-sqrt5)/2, float64(n1))return int(math.Round((pow1 - pow2) / sqrt5)) }

《苍穹外卖》电商实战项目(java)知识点整理(P1~P65)【上】

史上最完整的《苍穹外卖》项目实操笔记&#xff0c;跟视频的每一P对应&#xff0c;全系列10万字&#xff0c;涵盖详细步骤与问题的解决方案。如果你操作到某一步卡壳&#xff0c;参考这篇&#xff0c;相信会带给你极大启发。 《苍穹外卖》项目实操笔记【中】&#xff1a;P66~P…

SiteServer 插件之 用户登录插件-用户注册

1、请确保已经安装了“用户登录插件”,如下图。 2、 显示管理->包含文件管理->include/header.html->编辑,如下图。 3、代码如下。 <header><div class="wrap"><div class="top-box clearfix"><div class="left-box…

C# 与 Qt 的对比分析

C# 与 Qt 的对比分析 目录 C# 与 Qt 的对比分析 1. 语言特性 2. 开发环境 3. 框架和库 4. 用户界面设计 5. 企业级应用 6. 性能考量 在软件开发领域&#xff0c;C# 和 Qt 是两种常用的技术栈&#xff0c;它们分别在.NET平台和跨平台桌面应用开发中占据重要位置。本文将深…

cordova build android 下载gradle太慢

一、 在使用cordova run android / cordova build android 的时候 gradle在线下载 对于国内的链接地址下载太慢。 等待了很长时间之后还会报错。 默认第一次编译在线下载 gradle-7.6.1-all.zip 然后解压缩到 C:\Users\Administrator\.gradle 文件夹中,下载慢导致失败。 二…

Vuex存储数据实例

Vuex存储数据实例 目录 Vuex存储数据实例配置 Vuex 状态和 mutations在组件中使用 Vuex 存储数据在另一个组件中获取存储的数据 1. 配置 Vuex 状态和 mutations 2. 组件1将数据存储进Vuex 3. 由组件2将数据取出 配置 Vuex 状态和 mutations // store/index.js import Vue from…

前端工程化06-JavaScript模块化CommonJS规范ES Module

7、JavaScript模块化 在js开发中&#xff0c;他并没有拆分的概念&#xff0c;并不像java一样他可以拆分很多的包&#xff0c;很多的类&#xff0c;像搭积木一样完成一个大型项目的开发&#xff0c;所以js在前期的时候并不适合大型后端的项目开发&#xff0c;但是这些问题在后来…

CNN实现卫星图像分类(tensorflow)

使用的数据集卫星图像有两类&#xff0c;airplane和lake&#xff0c;每个类别样本量各700张&#xff0c;大小为256*256&#xff0c;RGB三通道彩色卫星影像。搭建深度卷积神经网络&#xff0c;实现卫星影像二分类。 数据链接百度网盘地址&#xff0c;提取码: cq47 1、查看tenso…

CentOS常用命令有哪些?

目录 一、CentOS常用命令有哪些&#xff1f; 二、不熟悉命令怎么办&#xff1f; 场景一&#xff1a;如果是文件操作&#xff0c;可以使用FileZilla工具来完成 场景二&#xff1a;安装CentOS桌面 一、CentOS常用命令有哪些&#xff1f; CentOS 系统中有许多常用命令及其用法…

ApacheCordova 12 +Vs 2022 项目搭建教程_开发环境搭建教程

一、安装 cordova cli 并使用命令创建项目 npm install –g cordova 详细参考: Apache Cordova开发环境搭建(二)VS Code_天马3798-CSDN博客_cordova vscode 二、 Vs 2022 Android 开发搭建+调试 .Net MAUI 搭建Android 开发环境-CSDN博客 三、配置 JDK 环境变量、配置…