【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;接下来我们我们思考如果一个服务需要调用另一个服务的接口信息&…

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

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

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.…

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…

cordova build android 下载gradle太慢

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

前端工程化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 系统中有许多常用命令及其用法…

leetcode尊享面试100题(549二叉树最长连续序列||,python)

题目不长&#xff0c;就是分析时间太久了。 思路使用dfs深度遍历&#xff0c;先想好这个函数返回什么&#xff0c;题目给出路径可以是子-父-子的路径&#xff0c;那么1-2-3可以&#xff0c;3-2-1也可以&#xff0c;那么考虑dfs返回两个值&#xff0c;对于当前节点node来说&…

JavaScript —— APIs(五)

一、Window对象 1. BOM&#xff08;浏览器对象模型&#xff09; 2. 定时器-延时函数 ①、定义 ②、定时器比较 ③、【案例】 3. JS执行机制 4. location对象 注意&#xff1a;hash应用 不点击页面刷新号&#xff0c;点击刷新按钮也可以实现页面刷新 【案例】 5. navig…

电机控制系列模块解析(16)—— 电流环

一、FOC为什么使用串联控制器 在此说明&#xff0c;串联形式&#xff08;内外环形式&#xff0c;速度环和电流环控制器串联&#xff09;并不是必须的&#xff0c;但是对于线性控制系统来说&#xff0c;电机属于非线性控制对象&#xff0c;早期工程师们为了处理电机的非线性&am…

【ARM】ARM寄存器和异常处理

1.指令的执行过程 &#xff08;1&#xff09;一条指令的执行分为三个阶段 1.取址&#xff1a; CPU将PC寄存器中的地址发送给内存&#xff0c;内存将其地址中对应的指令返回 到CPU中的指令寄存器&#xff08;IR&#xff09; 2.译码&#xff1a; 译码器对IR中的指令…

神经网络中的算法优化(皮毛讲解)

抛砖引玉 在深度学习中&#xff0c;优化算法是训练神经网络时至关重要的一部分。 优化算法的目标是最小化&#xff08;或最大化&#xff09;一个损失函数&#xff0c;通常通过调整神经网络的参数来实现。 这个过程可以通过梯度下降法来完成&#xff0c;其中梯度指的是损失函数…

Grafana:云原生时代的数据可视化与监控王者

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Grafana&#xff1a;让数据说话的魔术师》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Grafana简介 2、Grafana的重要性与影响力 …