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

news2024/10/6 12:19:30

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.coloradmin.cn/o/1662116.html

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

相关文章

react18【实战】tab切换,纯前端列表排序(含 lodash 和 classnames 的安装和使用)

技术要点 动态样式 className{tabItem ${currentType item.value && "active"}}安装 lodash npm i --save lodash使用 lodash 对对象数组排序&#xff08;不会改变源数组&#xff09; _.orderBy(dataList, "readNum", "desc")src\De…

十二种网络威胁防护方案

一、SQL注入 SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严&#xff0c;攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句&#xff0c;在管理员不知情的情况下实现非法操作&#xff0c;以此来实现欺骗数据库服务器执行非授权的任…

Python之数据分析基础

导言&#xff1a; “21世纪的竞争是数据的竞争&#xff0c;谁掌握数据&#xff0c;谁就掌握未来”。如何将大量看似杂乱无章的数据进行聚合&#xff0c;并发现潜在的规律也变得越来越重要。本文将先说明数据分析的步骤&#xff0c;再通过python完成实例数据的处理、分析最终展…

19.接口自动化-Jekins学习

1.CI-持续集成 频繁的&#xff08;一天多次&#xff09;将代码集成到主干 目的&#xff1a;让产品快速迭代&#xff0c;保持高质量 好处&#xff1a; 快速发现错误&#xff0c;每次更新都集成到主干&#xff0c;可以快速发现错误&#xff0c;定位错误也容易防止分支大幅偏离主…

示波器基础1-带宽

数字示波器最重要的基本特征之一是其带宽&#xff0c;了解带宽及其对技术指标的影响对于选择合适的示波器非常有帮助。 这里我们对示波器带宽的一些基本方面做一简要介绍。 当我们谈到示波器的带宽时&#xff0c;重要的是要区分模拟带宽和数字带宽。模拟带宽主要受仪器模拟输入…

TriCore: Architecture

说明 本文是 英飞凌 架构文档 TriCore TC162P core archiecture Volume 1 of 2 (infineon.com) 的笔记&#xff0c;稍作整理方便查阅&#xff0c;错误之处&#xff0c;还请指正&#xff0c;谢谢 :) 1. Architecture 2. General Purpose & System Register 名词列表&#…

Spring Cloud Alibaba 网关 Gateway 集成(7)

项目的源码地址 Spring Cloud Alibaba 工程搭建&#xff08;1&#xff09; Spring Cloud Alibaba 工程搭建连接数据库&#xff08;2&#xff09; Spring Cloud Alibaba 集成 nacos 以及整合 Ribbon 与 Feign 实现负载调用&#xff08;3&#xff09; Spring Cloud Alibaba Ribbo…

用标准的GNU/Linux命令替换Alpine上的精简版命令

Alpine Linux 是一个基于 musl libc 和 busybox 的轻量级Linux发行版&#xff0c;busybox 实现了很多常用类Unix命令的精简版&#xff0c;特点是体积很小&#xff0c;舍弃了很多不常用参数&#xff0c;我们简单对比一下标准Linux自带的 date 命令 和 Alpine下默认的 date 命令便…

Babel基础知识及实现埋点插件

目录 前言 AST 遍历 Visitors Paths&#xff08;路径&#xff09; Paths in Visitors&#xff08;存在于访问者中的路径&#xff09; State&#xff08;状态&#xff09; Scopes&#xff08;作用域&#xff09; Bindings&#xff08;绑定&#xff09; API babylo…

LeetCode 112. 路径总和 || LeetCode 113. 路径总和ii

LeetCode 112. 路径总和 1、题目 题目链接&#xff1a;112. 路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true…

唤醒手腕 Go 语言 并发编程、Channel通道、Context 详细教程(更新中)

并发编程概述 ​ 一个进程可以包含多个线程&#xff0c;这些线程运行的一定是同一个程序&#xff08;进程程序&#xff09;&#xff0c;且都由当前进程中已经存在的线程通过系统调用的方式创建出来。进程是资源分配的基本单位&#xff0c;线程是调度运行的基本单位&#xff0c…

CentOS 7安装配置docker

CentOS 7、8安装、配置docker 这里宿主机的型号选择是centos7.9.2009的版本 1.宿主机关闭防火墙和selinux&#xff0c;配置ipv4 #设置SELinuxdisabled vim /etc/selinux/config SELinuxdisabled 查看防火墙状态&#xff1a;firewall-cmd --state 关闭防火墙&#xff1a;syst…

C# WinForm —— 14 CheckedListBox 复选列表框介绍

1. 简介 类似 ListBox&#xff0c;提供项的列表&#xff0c;区别就是 CheckedListBox 每一个项前面有个复选框 2. 常用属性 属性解释(Name)控件ID&#xff0c;在代码里引用的时候会用到,一般以 ckl 开头BackColor背景颜色BoderStyle边框样式&#xff1a;无、FixedSingle、F…

探索静态住宅代理IP:网络安全的隐形守护者

在当今这个数字化高速发展的时代&#xff0c;网络安全问题愈发凸显其重要性。无论是企业级的网络运营&#xff0c;还是个人用户的网络活动&#xff0c;都需要一个安全、稳定的网络环境。而在这个环境中&#xff0c;静态住宅代理IP以其独特的优势&#xff0c;逐渐成为了网络安全…

如何通过PHP语言实现远程控制空调

如何通过PHP语言实现远程控制空调呢&#xff1f; 本文描述了使用PHP语言调用HTTP接口&#xff0c;实现控制空调&#xff0c;通过不同规格的通断器&#xff0c;来控制不同功率的空调的电源。 可选用产品&#xff1a;可根据实际场景需求&#xff0c;选择对应的规格 序号设备名称…

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

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

linux性能监控之top

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

重学java 35.API 6.包装类

心有所念&#xff0c;必有所灵 —— 24.5.10 一、基本数据类型对应的引用数据类型(包装类) 1概述 就是基本类型所对应的类&#xff08;包装类&#xff09;&#xff0c;我们需要将基本类型转为包装类&#xff0c;从而让基本类型拥有类的特性&#xff08;是基本类型可以使用包装类…

聊聊ChatGPT:智能语言模型背后的原理

目录 1. ChatGPT的基础&#xff1a;GPT模型 2. 预训练与微调&#xff1a;让模型更加智能 2.1 预训练 2.2 微调 3. 多样化的应用场景 4. 未来的展望 5. 结语 在当今的人工智能领域&#xff0c;OpenAI的ChatGPT无疑是一个炙手可热的话题。它不仅能流畅地进行对话&#xff…

Databend 开源周报第 143 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 了解 Databend …