当前位置: 首页 > news >正文

初学WPF

image

1.对WPF的了解

官方解释:

WPF全称是Windows Presentation Foundation,它的核心是一个与分辨率无关并且基于向量的呈现引擎,旨在利用现代图形硬件的优势。WPF 通过一整套应用程序开发功能扩展了这个核心,这些功能包括Extensible Application Markup Language (XAML)、控件、数据绑定、布局、2-D和3-D图形、动画、样式、模板、文档、媒体、文本和版式。WPF 包含在 Microsoft .NET Framework 中,使您能够生成融入了 .NET Framework 类库的其他元素的应用程序。

通俗解释:

WPF是一个UI框架,此框架利用了设备的图形处理优势,让其可以更加灵活的实现UI,而在UI中我们可以通过XAML、控件,然后利用图形、动画、样式等实现丰富的UI界面,同时还可以通过数据绑定,让UI和后端更好的衔接,实现数据动态交互。WPF和Winform(WF)相比,WPF更加的灵活,如果做过WEB开发的,会发现它和WEB有很多相似之处,至少思想有点相通,较WF而言,更侧重UI,并且分离比WF更好。

分离的优点:

  1. 降低开发和维护成本。
  2. 开发效率更高,因为设计人员和开发人员可以同步进行。
  3. 可以使用多种设计工具实现和共享XAML标记。
  4. WPF应用程序的全球化和本地化得以大大简化。

2. WPF的学习路线

跳脱WF开发思维:在学WPF之前,需要有C#的基础,其次要从WF拖控件的思维中跳脱出来,否则会形成固化思维,无法适应WPF开发。

WPF基础掌握:WPF的基础侧重点在于XAML、控件、布局等的学习,这个可以参考官方的文档进行学习

WPF深入学习:这儿主要是侧重数据、事件等的驱动学习。

WPF扩展学习:对图形、多媒体的处理,以及第三方的一些框架的使用学习。当然还有其他。

3. WPF的应用场景

  1. 独立的应用程序,比如传统风格的Windows应用程序。
  2. XAML Browser applications(XBAPs),由导航页面构成的应用程序,可以通过IE或者火狐等WEB浏览器运行。
  3. 自定义控件库(包含可重用控件的不可执行程序集)。
  4. 类库(包含可重用类的不可执行程序集)。

4. 开发工具

开发工具版本:VS2022社区版 "程序员晓晓" 回复"vs2022" 安装教程放到授课资料中.net5 .net6》》》webWPF没法跨平台》》》需要借助于框架完成

Winform :界面层+设计代码层+隐藏代码
WPF:界面层(.xaml,xaml是一种声明式标记语言)+隐藏代码

共同点:都可以开发窗体程序(.exe)、都属于UI框架、都有控件。。。
不同点:WPF不受分辨率限制、可以开发让浏览器显示的程序。。。

Window:是一个根标签,用来定义一个窗口
:网格布局元素。

        <Grid> </Grid>

5. XAML认识

HTML、XML
XAML:Extensible Application Markup Language,可扩展应用程序标记语言,声明式标记语言。
扩展名为: .xaml的xml文件 UTF-8编码
专门用于WPF中的UI设计语言。
HTML、MXML、XSLT等。

在XAML中,通常把标签元素称为对象元素。
语法:
【1】内容对象元素:<对象元素>...</对象元素>
示例:

 <Grid><Button Name="button" Click="button_Click">我的第一个WPF应用程序</Button></Grid>

【2】自封闭对象元素:<对象元素 />
示例:
<Button />

StackPanel:布局元素,堆叠布局元素。

以下是嵌套内容:

<StackPanel><Button Name="button" Click="button_Click">我的第一个WPF应用程序</Button><Button Content="点击我" />
</StackPanel>

6. XAML常见的一些设置

第一:特性语法
【1】属性语法
对象的属性在对象元素中,通常称为对象元素的特性(属性)。
语法:特性名="值"
提示:此处的值需要包含在引号中,以字符串的形式进行指定

  • Background:背景颜色属性。
  • Foreground:设置字体颜色

F1: 可以进入到指定属性的官方文档说明

【2】事件语法
特性的值是实现事件委托的处理程序名称。

第二:属性元素语法
属性元素:通常用于当前对象元素的某个属性,无法通过特性语法实现我们想要对对象元素传递的信息。
语法:<元素类型名称.属性名称></元素类型名称.属性名称>

 <Button><Button.Content>我是通过属性元素进行设置</Button.Content><Button.Background><SolidColorBrush Color="Green" /></Button.Background><Button.Foreground><SolidColorBrush Color="White" /></Button.Foreground>
</Button>

第三:集合语法
集合语法:通常某一些特性属性,需要通过集合类型的方式去完成相应的效果,比如添加渐变色,此时就需要用到集合语法。

示例:

 <Rectangle Height="100"><Rectangle.Fill><LinearGradientBrush StartPoint="1,0" EndPoint="1,1"><LinearGradientBrush.GradientStops><GradientStop Offset="0.0" Color="Red" /><GradientStop Offset="0.5" Color="Green" /><GradientStop Offset="1.0" Color="Blue" /></LinearGradientBrush.GradientStops></LinearGradientBrush></Rectangle.Fill></Rectangle>

第四:XAML内容属性
内容属性:XAML中通过对象元素的子元素设置内容属性的值,而且一个类可以指定一个且仅一个属性为XAML内容。

简写形式:

        <Border><TextBlock Text="Border学习" FontSize="20" Width="120" Background="#FFEAEAEA"/></Border>

显示标明:

<Border><Border.Child><TextBlock Width="180"/></Border.Child></Border>

第五:文本内容(了解)

这种需要满足一定的条件进行使用:

【1】类必须声明一个内容属性,并且该内容属性是可以赋值给字符串类型。比如ContentControl
【2】类型必须声明一个类型转换器,该类型转换器将文本内容用作其初始化文本。
【3】类型必须为已知的xaml语言基元。

第六:内容属性和集合语法组合使用

        <StackPanel><Button Height="30" Content="按钮1" Background="Yellow"/><Button Height="30" Content="按钮2" Background="Green"/><Button Height="30" Content="按钮3" Background="Pink"/></StackPanel>

注意:大小写和空白
XAML种区分大小写,通常对象元素、属性元素和特性名称必须区分大小写。
XAML处理器和程序会忽略或删除无意义的空白,并且规范有意义的空白。

7. 标记扩展

标记扩展:指的是给特性语法提供值得时候,用大括号{}标记扩展。 , 那这个就很好理解了啊 ,像绑定 ,样式 ,触发器什么的使用的就是这个

常用的标记扩展:

  1. Binding:用于数据的绑定(绑定表达式)
  2. StaticResource:用于静态资源的引用
  3. DynamicResource:用于动态资源的引用

8. 类型转换器

<StackPanel><Button Margin="10,20,10,30" Content="点击我" /><Button Content="同样点击我"><Button.Margin><ThicknessBottom="30"Left="10"Right="10"Top="20" /></Button.Margin></Button></StackPanel>

通过Thinkness转换器,可以将四个关键属性作为新实例特性。| 说实话这里还是有好多我是没有掌握的 ,所以后续就需要自己慢慢的去进行一个学习

5. XAML根元素和XAML命名空间

根元素:一个xaml文件只有一个根元素,能保证XML文件和XAML格式正确并有效。

常见根元素:页面使用的根元素:Window、Page

外部字典使用的根元素:ResourceDictionary应用程序定义使用的根元素:Application用户控件页面

根元素包含特性xmlns和xmlns:x

  • xmlns特性:指明默认的xaml命名空间,在默认的命名中,不需要使用前缀指定标记中对象元素。
  • http://schemas.microsoft.com/winfx/2006/xaml/presentation
  • xmlns:x特性:指向另外一个xaml空间,此空间指向的是语言命名空间。
  • http://schemas.microsoft.com/winfx/2006/xaml

代码展示:

<Window x:Class="_001_MyFirstWPFApp.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:_001_MyFirstWPFApp"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800">

6. x:前缀

  1. x:Key: 为ResourceDictionary(或其他框架中的类似字典概念)中的每个资源设置唯一的键
  2. x:Class:向xaml页面中提供隐藏代码类指向命名空间和类名。
  3. x:Name:给对象元素指定实例名,通常命名元素可以使用Name属性去给对象元素指定名称。如果元素没有Name,此时可以使用x:Name指定,二者等效
  4. x:Static 启用一个返回静态值的引用,该静态值只能是一个XAML兼容属性。
  5. x:Type 根据类型名称构造一个Type引用,用于指定采用Type 如Style.TargetType

7. 附加属性

语法:所有者类型.属性名

<DockPanel><Button DockPanel.Dock="Left">第一个按钮</Button><Button DockPanel.Dock="Right">第一个按钮</Button>
</DockPanel>

快捷键:ctrl+k+c 撤销:ctrl+k+u

  • 注释:

WPF中常见四个比较重要的属性:
Margin:外边距 | 它的使用方式是这样子的:Margin = "左 ,上 ,右 ,下"

<Button Content="Margin使用" Height="30" Margin="0 , 10 , 0 , 0"/>

Padding:内边距
HorizontalAlignment:表示元素在父元素中的水平对齐方式(左、中、右、铺满)。
VerticalAlignment:表示元素在父元素中的垂直对齐方式(上、中、下、铺满)

Margin:四个值,分别是左、上、右、下

Margin为一个的时候,表示四个方向都有距离

Margin为2个值:左右 和上下
Margin="20,0"


Border : 装饰器元素

http://www.jsqmd.com/news/71037/

相关文章:

  • 2025年高速离心机/低速离心机/冷冻离心机品牌TOP6:优质厂家选购指南 - 品牌推荐大师
  • 筑牢水务安全屏障:2025 十大水务阀门品牌引领行业高质量发展 - 品牌推荐排行榜
  • 2025年Q4全国球墨铸铁管厂家哪家好?全场景适配推荐,工程采购权威榜单 - AIEO
  • 2025中国市场主流AI ATS厂商盘点,企业智能招聘系统如何选型
  • 供应链风险管理更推荐哪家企业?源堡科技筑牢安全防线 - 资讯焦点
  • 【GitHub每日速递 20251210】独立浏览器 Ladybird 来袭!多进程架构+多系统兼容,开发必备!
  • 2025年12月隔音舱源头工厂深度测评:5大主流品牌核心数据横评 - 资讯焦点
  • 祝贺东航首飞全球最长单程航线!通义千问和 AI 网关助力推出首个行程规划 Agent
  • 2025 年 12 月北京装修口碑 TOP10:亿丰方圆 99.9 分封神 全场景无忧指南 - 品牌智鉴榜
  • 2025 年 12 月北京装修口碑 TOP10:亿丰方圆 99.9 分封神 全场景无忧指南 - 品牌智鉴榜
  • 物联网传感器环境自适应校准与精度补偿手艺
  • 工业风机公司排行榜Top1!工业风机哪个品牌好? - 资讯焦点
  • 2025年中老年男性保健品盘点推荐,三井龙虎丸领跑男性壮阳补肾市场 - 资讯焦点
  • 2025 年 12 月全国太阳能路灯厂家五大推荐:雷泰照明领衔,高性价比户外照明解决方案优选 - 深度智识库
  • dify修复 React 和 Next.js 中的严重远程代码执行漏洞
  • 2025年12月实验室装修/实验室改造/实验室设计找哪家?哪家靠谱?怎么联系? - 品牌推荐大师
  • 2025 热门 AI 培训机构实测报告
  • 2025年12月导热凝胶厂家推荐榜:单组份/双组份/导热凝胶、导热硅胶片综合参考,深圳联腾达领跑,四大品牌以技术破解电子散热难题 - 海棠依旧大
  • 若依微服务版从零搭建
  • pyenv-win安装初步使用
  • 刚刚,IDEA 免费版发布!终于不用破解了
  • 刚刚,IDEA 免费版发布!终于不用破解了
  • 信号与系统 于慧敏 典型的系统
  • 公司企业年会抽奖小程序
  • Flask学习笔记
  • 2025微型加热器十佳品牌技术白皮书——高精度温控解决方案供应商推荐榜 - 品牌推荐大师1
  • 2025微型加热器十佳品牌技术白皮书——高精度温控解决方案供应商推荐榜 - 品牌推荐大师1
  • 题解:P11520 [THUPC 2025 初赛] 骑行计划
  • 在IAR Embedded Workbench for Renesas RH850中开发和调试Renesas RH850 MCU
  • 在本地机器上训练和运行斯坦福Alpaca模型指南