【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 等

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

六级仔细阅读

画两到三个词&#xff0c;精准定位 要原文和同义都满足才选 先看题目&#xff0c;在看原文&#xff0c;不要先看选项 做不出答案就继续往下读&#xff0c;读出来了就不用继续读了 分清楚是问为什么还是是什么&#xff0c;是什么看前面&#xff0c;为什么看后面 不知道就优先…

用例自动生成工具:Tcases实践指南

软件质量保障 所寫即所思&#xff5c;一个阿里质量人对测试的所感所悟。 Tcases能做什么? Tcases 是一个用于设计测试用例的工具。无论何种系统&#xff0c;无论何种测试类型&#xff08;单元测试、系统测试等&#xff09;&#xff0c;都可以使用 Tcases 来设计测试。你也可以…

【系统分析师】软件架构设计

文章目录 1、构件与软件复用1.1 主流构件标准1.2 构件获取与管理1.3 构件复用的方法 2、软件架构概述3、软件架构建模4、软件架构风格4.1 经典架构风格4.2 层次架构风格4.3 富互联网应用-RIA 5、面向服务的架构5.1 SOA概述5.2 SOA的关键技术5.3 SOA的实现方法 6、软件架构评估6…

使用python获取一下microsoft的搜索积分

主要使用的库是pyautogui PyAutoGUI接管了鼠标、键盘使用权,基本上完全照搬人的操作; 主要步骤如下: 登录edge浏览器打开搜索页面 找到搜索框的位置坐标使用pyautogui模拟点击搜索框模拟输入搜索文字模拟点击键盘enter键重复以上动作伪代码如下: import pyautogui import ti…

linux性能监控之top

说完了atop和htop&#xff0c;我们在来说说Linux自带的top&#xff0c;我们先看看命令效果&#xff1a; 可以看到是一个实时的系统监控工具&#xff0c;提供了一个动态的、交互式的实时视图&#xff0c;显示系统的整体性能信息以及正在运行的进程的相关信息。 我们先来解析下命…

【AI+换脸换装】从OpenAI 探索色情露骨内容领域浅聊AI换脸换装

5月9日消息&#xff0c;据外电报道&#xff0c;OpenAI 周三发布了文档草案&#xff0c;阐述了它希望 ChatGPT 及其其他人工智能技术如何运作。冗长的Model Spec 文件的一部分透露&#xff0c;该公司正在探索进军色情和其他露骨内容领域。 看完这个&#xff0c;心里有点惊讶&am…

Go实现树莓派I2C读取SHT30温度湿度传感器

简介 树莓派其实本身包含很多资源引脚&#xff0c; 合理利用其实可以自制智能家居的一部分&#xff0c;本身硬件和Linux系统等高级语言支持加生态&#xff0c; 不说了&#xff0c; 做就好了… I2C 功能开启 参考之前的文章就可以了 Go实现树莓派读取bh1750光照强度 查看I2C总…

大米自动化生产线揭秘:包装设备选择与维护之道

在现代化的大米生产过程中&#xff0c;自动化生产线的应用已经越来越广泛。其中&#xff0c;包装设备作为生产线上的重要一环&#xff0c;其选择与维护直接关系到产品的质量和生产效率。与星派一起探讨大米自动化生产线中包装设备的选择与维护之道。 一、包装设备的选择 在选择…

寻找最大价值的矿堆 - 矩阵

系列文章目录 文章目录 系列文章目录前言一、题目描述二、输入描述三、输出描述四、Java代码五、测试用例 前言 本人最近再练习算法&#xff0c;所以会发布一些解题思路&#xff0c;希望大家多指教 一、题目描述 给你一个由’0’(空地)、‘1’(银矿)、‘2’(金矿)组成的地图…

Element快速上手!

Element是饿了么公司前端团队开发的一套基于Vue的组件库&#xff0c;用于快速构建网页~ 官网链接&#xff1a; Element - The worlds most popular Vue UI frameworkElement&#xff0c;一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库https://element.elem…

未授权访问:Memcached 未授权访问漏洞

目录 1、漏洞原理 2、环境搭建 3、未授权访问 防御手段 今天继续学习各种未授权访问的知识和相关的实操实验&#xff0c;一共有好多篇&#xff0c;内容主要是参考先知社区的一位大佬的关于未授权访问的好文章&#xff0c;还有其他大佬总结好的文章&#xff1a; 这里附上大…

求阶乘n!末尾0的个数溢出了怎么办

小林最近遇到一个问题&#xff1a;“对于任意给定的一个正整数n&#xff0c;统计其阶乘n&#xff01;的末尾中0的个数”&#xff0c;这个问题究竟该如何解决&#xff1f; 先用n5来解决这个问题。n的阶乘即n!5!5*4*3*2*1120&#xff0c;显然应该为2个数相乘等于10才能得到一个结…

AI大模型探索之路-训练篇20:大语言模型预训练-常见微调技术对比

系列篇章&#x1f4a5; AI大模型探索之路-训练篇1&#xff1a;大语言模型微调基础认知 AI大模型探索之路-训练篇2&#xff1a;大语言模型预训练基础认知 AI大模型探索之路-训练篇3&#xff1a;大语言模型全景解读 AI大模型探索之路-训练篇4&#xff1a;大语言模型训练数据集概…

Xilinx 千兆以太网TEMAC IP核简介

Xilinx 公司提供了千兆以太网MAC控制器的可参数化LogiCORET™IP解决方案&#xff0c;通过这个IPCore可以实现FPGA与外部网络物理层芯片的互连。基于Xilinx FPGA 的以太网设计&#xff0c;大大降低了工程的设计复杂度&#xff0c;缩短了开发周期&#xff0c;加快了产品的面市速度…

大数据Scala教程从入门到精通第六篇:Scala源文件编写和运行

一&#xff1a;Scala源文件编写和运行 1&#xff1a;源代码比较 public class HelloJava{public static void main(String[] args){System.out.println("hello scala")} } object HelloScala{//用于声明方法 入参是一个String类型的数组。返回值类型为空def main…

用云手机打造海外社媒矩阵

在全球经济一体化的大背景下&#xff0c;中国出海企业及B2B外贸公司正将海外社交媒体营销作为重要的市场拓展策略。为更好地触及不同受众群体&#xff0c;构建跨平台的社媒矩阵已成为企业营销的关键步骤。本文将探讨如何利用云手机技术&#xff0c;高效管理并运营多个海外社交媒…

泰迪智能科技携手新乡学院开展“泰迪智能双创工作室”共建交流会

为深化校企合作&#xff0c;实现应用型人才培养目标。5月8日&#xff0c;广东泰迪智能科技股份有限公司河南分公司市场总监张京瑞到访新乡学院数学与统计学院参观交流&#xff0c;数学与统计学院院长赵国喜、副院长皮磊、张秦&#xff0c;教研室主任许寿方、姚广出席本次交流会…

【研发日记】Matlab/Simulink避坑指南(十二)——Initialize Function执行Bug

文章目录 前言 背景介绍 问题描述 分析排查 解决方案 总结归纳 前言 见《研发日记&#xff0c;Matlab/Simulink避坑指南(七)——数据溢出钳位Bug》 见《研发日记&#xff0c;Matlab/Simulink避坑指南(八)——else if分支结构Bug》 见《研发日记&#xff0c;Matlab/Simuli…

【matlab基础知识代码】(十六)代数方程的图解法多项式型方程的准解析解方法

>> ezplot(exp(-3*t)*sin(4*t2)4*exp(-0.5*t)*cos(2*t)-0.5,[0 5]), line([0 5],[0 0]) 验证 >> t0.6738; >> exp(-3*t)*sin(4*t2)4*exp(-0.5*t)*cos(2*t)-0.5 ans -2.9852e-04 >> ezplot(x^2*exp(-x*y^2/2)exp(-x/2)*sin(x*y)) >> hold on; …

使用hdc TCP模式无线方式连接OpenHarmony设备

本文将介绍如何使用hdc工具 tcp模式以无线的方式连接OpenHarmony设备。 1. usb连接方式切换为tcp模式。 将usb线将OpenHarmony设备和电脑端连接&#xff0c;并且将两个连接至同一个局域网。 # 执行 tmode port port-number&#xff0c;port-number设置为端口号。 hdc tmode …