C#-WPF介绍-创建项目-添加按钮等及其事件处理、属性设置

news2025/1/15 6:47:14

微软官网指导链接:适用于 .NET 5 的 Windows Presentation Foundation 文档 | Microsoft Learn

WPF框架介绍:Windows Presentation Foundation 简介 - WPF .NET | Microsoft Learn

WPF介绍

WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。

WPF是微软新一代图形系统,运行在.NET Framework 3.0及以上版本下,为用户界面、2D/3D 图形、文档和媒体提供了统一的描述和操作方法。基于DirectX 9/10技术的WPF不仅带来了前所未有的3D界面,而且其图形向量渲染引擎也大大改进了传统的2D界面,比如Vista中的半透明效果的窗体等都得益于WPF。 程序员在WPF的帮助下,要开发出媲美Mac程序的酷炫界面已不再是遥不可及的奢望。 WPF相对于Windows客户端的开发来说,向前跨出了巨大的一步,它提供了超丰富的.NET UI 框架,集成了矢量图形,丰富的流动文字支持(flow text support),3D视觉效果和强大无比的控件模型框架。

WPF应用程序(.Net Core WPF)和WPF应用(.Net Framework)的区别

.Net Core为微软免费开源代码,是一个.Net Fundation项目

.Net Core跨平台,可以在windows、macos、linux上运行。部署灵活、兼容性好。

从.Net Core 3.0起,.Net Core支持开发桌面应用程序。包括WPF和Winform。

使用.Net Core开发WPF应用程序,需要Visual Studio 2019 16.3及以上版本。

WPF目前已经开源,项目地址:https://github.com/dotnet/wpf 

WPF的功能和特性:

1、使用XAML标记语言来构建界面

2、前后端分离,使用C#语言作为后台逻辑代码语言。

按功能分类的 WPF 控件

下面列出了内置的 WPF 控件:

  • 按钮: Button 和 RepeatButton。
  • 数据显示:DataGrid、ListView 和 TreeView。
  • 日期显示和选项: Calendar 和 DatePicker。
  • 对话框: OpenFileDialog、 PrintDialog和 SaveFileDialog。
  • 数字墨迹: InkCanvas 和 InkPresenter。
  • 文档: DocumentViewer、 FlowDocumentPageViewer、 FlowDocumentReader、 FlowDocumentScrollViewer和 StickyNoteControl。
  • 输入: TextBox、 RichTextBox和 PasswordBox。
  • 布局: Border、 BulletDecorator、 Canvas、 DockPanel、 Expander、 Grid、 GridView、 GridSplitter、 GroupBox、 Panel、 ResizeGrip、 Separator、 ScrollBar、 ScrollViewer、 StackPanel、 Thumb、 Viewbox、 VirtualizingStackPanel、 Window和 WrapPanel。
  • 媒体: Image、 MediaElement和 SoundPlayerAction。
  • 菜单: ContextMenu、 Menu和 ToolBar。
  • 导航: Frame、 Hyperlink、 Page、 NavigationWindow和 TabControl。
  • 选项: CheckBox、 ComboBox、 ListBox、 RadioButton和 Slider。
  • 用户信息: AccessText、 Label、 Popup、 ProgressBar、 StatusBar、 TextBlock和 ToolTip。

创建项目实战

  • 选择WPF应用》下次点开固定在左边方便使用

  • 创建项目后运行如下,其中工具也是在左边工具栏点击选择中在窗体中添加,添加后会自动在XAML中生成代码,XAML类似WinForm中的Desiner.cs,显示界面的更改配置都是在XAML这里编写。同时右下角部分用于设置属性,个人感觉比WinForm的更好看懂。

  • 基本属性。显示内容默认在分组中,也可以鼠标右键更改。显示属性:第一参数CheckBox为控件类型,Name对应变量名,Content显示名,HorizontalAlignment水平对齐方式,Margin界面中相对位置(左、上、右、下),VerticalAlignment垂直对齐方式
  • 添加按钮点击事件处理
    1. 在XAML中添加Click="button_click",button_click为对应函数名
    2. 添加后默认会在对应的.g.i.cs文件中生成事件触发函数。this.button.Click += new System.Windows.RoutedEventHandler(this.button_click);
    3. 在对应的.xaml.cs文件中添加处理事件。先在上面RoutedEventHandler鼠标点击后按F12查看接口声明,拷贝到.xaml.cs文件中,将函数名改成自己定义的button_click,实现该函数

  • 这里的事件是在ButtonBase里面声明的,可以逐步的过来看有哪些事件处理
    1. 在对应.g.i.cs文件中Button声明这里鼠标点击Button后按F12
    2. 到Button声明这里发现主要是继承ButtonBase,那就去查看ButtonBase
    3. 其中主要的事件处理如下

  • 在XAML中添加点击事件处理
  • <Button x:Name="button_Copy" Content="Button" HorizontalAlignment="Left" Margin="31,66,0,0" VerticalAlignment="Top" Width="75" RenderTransformOrigin="0.5,0.5"
            Click="btnMessage_Click"/>
    <!--实现Click函数处理--> 
    <x:Code>
        <![CDATA[ void btnMessage_Click(object sender, System.Windows.RoutedEventArgs e) { MessageBox.Show("hello"); } ]]>
    </x:Code>
  • Style元素将属性值应用于类型,如Button添加后全部按配置显示
  • <Window.Resources>
        <!-- Style that will be applied to all buttons for this window -->
        <Style TargetType="{x:Type Button}">
            <Setter Property="Background" Value="Orange" />
            <Setter Property="BorderBrush" Value="Crimson" />
            <Setter Property="FontSize" Value="20" />
            <Setter Property="FontWeight" Value="Bold" />
            <Setter Property="Margin" Value="5" />
        </Style>
    </Window.Resources>
  • 设置通用背景色
    1. Resources里面设置属性,SolidColorBrush设置颜色Background指定使用,XmlDataProvider设置数据源Content指定使用
  • <Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        x:Class="SDKSample.ResourcesWindow"
        Title="Resources Window">
    
      <!-- Define window-scoped background color resource -->
      <Window.Resources>
        <SolidColorBrush x:Key="defaultBackground" Color="Red" />
      </Window.Resources>
    
      <!-- Button background is defined by window-scoped resource -->
      <Button Background="{StaticResource defaultBackground}">One Button</Button>
    
      <!-- Label background is defined by window-scoped resource -->
      <Label Background="{StaticResource defaultBackground}">One Label</Label>
    </Window>

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

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

相关文章

python3在window上运行或安装模块各种问题

1. 在window上运行celery各种奇怪的问题 如出现错误&#xff1a; ValueError: not enough values to unpack (expected 3, got 0) 请先安装如下模块 pip install eventlet 启动时&#xff0c;带上改模块&#xff0c;指定为运行参数 celery -A tasks worker --loglevelinfo -P …

基于小程序云开发的智慧物业、智慧小区微信小程序,在线报修报检,重大事项投票,报名参加小区活动,小区公告通知,业委会公示、租售房屋

功能介绍 完整代码下载地址&#xff1a;基于小程序云开发的智慧物业、智慧小区微信小程序 当前小区的物业事务越来越多、越来越杂&#xff0c;而很多业主工作繁重&#xff0c;加班很晚&#xff0c;以往对于重大事项投票&#xff0c;报修报检&#xff0c;装修申请&#xff0c;…

大数据技术之SparkSQL(超级详细)

第1章 Spark SQL概述 1.1什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块&#xff0c;它提供了2个编程抽象&#xff1a;DataFrame和DataSet&#xff0c;并且作为分布式SQL查询引擎的作用。 它是将Hive SQL转换成MapReduce然后提交到集群上执行&#xff0c;大大…

易盾滑块再再再试

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言文章推荐自己的坑js部分效果展示前言 声明&#xff1a;本文只作学习研究&#xff0c;禁止用于非法用途&#xff0c;否则后果自负&#xff0c;如有侵权&#xff…

php宝塔搭建部署实战响应式自动化设备科技企业网站源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 本期给大家带来一套php开发的响应式自动化设备科技企业网站源码&#xff0c;感兴趣的朋友可以自行下载学习。 技术架构 PHP7.2 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码&…

我眼中的偶数数据库 OushuDB

各位大家好&#xff0c;在论坛跟大家学习也有一段时间了&#xff0c;今天来聊聊我眼中的偶数数据库 &#xff5e; 首先&#xff0c;先来介绍介绍我和偶数的故事&#xff08;其实没有什么故事&#xff0c;只是一些交集片段&#xff09;。 2015 年我开始接触 Greenplum&#xf…

Spring Boot 配置文件

Spring Boot 配置文件一、配置文件作用二、配置文件的格式三、properties 配置文件说明3.1 properties 基本语法3.2 读取配置文件3.3 properties 优缺点分析四、yml 配置文件说明4.1 yml 优点分析4.2 yml 基本语法4.3 yml 基本配置读取4.4 配置对象与读取4.5 配置集合与读取五、…

时序预测 | Python实现XGBoost极限梯度提升树股票价格预测

时序预测 | Python实现XGBoost极限梯度提升树股票价格预测 目录 时序预测 | Python实现XGBoost极限梯度提升树股票价格预测预测效果基本描述环境配置模型描述程序设计参考资料预测效果 基本描述 Python实现XGBoost极限梯度提升树股票价格预测 环境配置 XGboost (0.7) numpy (1.…

负载均衡器Ribbon原理及实战演练

目录 一、负载均衡原理 二、Ribbon 原理及使用 三、Loadbalancer 原理及使用 负载均衡器Ribbon在微服务领域是很常用的服务调用、负载均衡的中间件,其面包含Loadbalancer专门负载负载均衡&#xff1b;比如Eureka、Fegin,Nacos的注册中心jar包里面均包含Ribbon相关的jar,如图…

python实战案例:采集某漫客《网游之近战法师》所有章节

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 环境使用: Python 3.8 Pycharm 模块使用: requests >>> pip install requests 数据请求模块 parsel >>> pip install parsel 数据解析模块 如果安装python第三方模块: win R 输入 cmd 点击确定, 输…

C++学习之旅 第五章(字符应用:小写字母转大写字母)

开头&#xff1a; 上一节我们讲了关于char类型许多知识&#xff0c;今天我们来更深层的学习一下字符实际上面的应用&#xff01; ASCII码简介&#xff1a; 我们要进行字符的应用&#xff0c;首先就是要了解一下ACSII码: ASCII(全名&#xff1a;American Standard Code for Inf…

win10如何安装多个jdk并实时进行切换【建议收藏】

在windows10的系统中&#xff0c;如何安装jdk或者安装多个jdk版本&#xff0c;博主在这里整理了一份非常完美的jdk版本安装教程&#xff0c;且jdk版本可以随时切换&#xff0c;切换过程不超过10秒&#xff0c;让你在jdk版本中穿梭自如&#xff0c;直接可以食用&#xff0c;掌握…

【前端】ES6

let 和 const 类似var定义变量&#xff0c;但是let修饰的变量仅在声明的代码块中有效&#xff1b; var声明的变量&#xff0c;在全局有效 for (let i 0; i < 3; i) {let i abc;console.log(i); }js中的for循环声明循环变量的部分也作为一个父作用域&#xff0c;即(let i…

虹科方案|数据中心虚拟化和 HK-ATTO 产品—旨在协同工作的端到端解决方案

一、概述虚拟化技术正迅速成为现代数据中心的基础&#xff0c;因为IT 管理寻求显着提 高资源和运营效率以及对业务需求的响应能力。三个关键技术非常重要&#xff1a;服务器虚拟化、结构虚拟化和存储虚拟化。 本次介绍了 HK-ATTO 产品如何作为这些虚拟化解决方案中 每一个的关键…

【图像处理OpenCV(C++版)】——4.1 对比度增强之灰度直方图

前言&#xff1a; &#x1f60a;&#x1f60a;&#x1f60a;欢迎来到本博客&#x1f60a;&#x1f60a;&#x1f60a; &#x1f31f;&#x1f31f;&#x1f31f; 本专栏主要结合OpenCV和C来实现一些基本的图像处理算法并详细解释各参数含义&#xff0c;适用于平时学习、工作快…

声纹识别与声源定位(二)

一、引言 什么是声源定位(Sound Source Localization&#xff0c;SSL)技术&#xff1f;声源定位技术是指利用多个麦克风在环境不同位置点对声信号进行测量&#xff0c;由于声信号到达各麦克风的时间有不同程度的延迟&#xff0c;利用算法对测量到的声信号进行处理&#xff0c;由…

【瑞萨RA4系列】使用TinyMaix识别手写数字

文章目录一、TinyMaix简介1.1 TinyMaix开源项目1.2 下载TinyMaix源码二、TinyMaix移植2.1 创建TinyMaix移植项目2.2 添加TinyMaix源码三、TinyMaix测试准备3.1 SysTick计时3.2 printf打印3.4 修改tm_port.h文件3.6 增大堆内存空间四、手写数字识别4.1 添加示例源码4.2 运行示例…

突破6.8关口 人民币汇率快速升值,释放什么信号?

近期以来&#xff0c;人民币表现强劲。2023年开年6个交易日&#xff0c;人民币对美元汇率中间价实现“六连涨”&#xff0c;累计上调2035个基点&#xff0c;升破6.8关口&#xff0c;展现出全新面貌。哪些因素影响近期人民币对美元汇率上涨&#xff1f;人民币兑美元汇率未来走势…

漏洞复现--xss

目录 一、实验目的 二、实验环境 三、 实验过程 搭建XSS平台 制作XSS脚本并注入 利用Cookie登录用户账号 一、实验目的 实验目的 本实验学习如何搭建个人的XSS平台以及如何使用XSS平台盗用用户Cookie登录。 二、实验环境 服务器&#xff1a;Windows 7 Target IP:10.1.…

【笔记:第5课】学习开发一个RISC-V上的操作系统 - 汪辰 - 2021春

文章目录前言来源正文小结前言 创作开始时间&#xff1a;2023年1月11日16:55:32 如题&#xff0c;学习一下RISC-V。 来源 https://www.bilibili.com/video/BV1Q5411w7z5?p5&vd_source73a25632b4f745be6bbcfe3c82bb7ec0 刚刚才知道老师是PLCT实验室的&#xff0c;牛。…