Wpf学习20180605
Windows Presentation Foundation 窗口展示框架 WPF。
与winform界面程序比较,我认为最大的区别是‘与分辨率无关’这个特性。
传统winform程序在低分辨率的电脑上开发,在高分辨率的显示器(显示器的尺寸不变)中显示,会发现原有的程序尺寸缩小了。
就好比100米物理距离,有50个等距点,每个点是一个像素点,winform设定50个像素点描绘了100米物理距离。
当100米变为100个等距点后,winform依然按设定的50个像素点描绘100米,在高DPI(单位长度下的像素点,数字越高,单位面积支持的分片率越高)下实际只显示50米。
wpf不是使用像素点的多少来描绘长度,而是根据DPI的值计算需要的像素点进行描绘。
windows系统标准DPI为96,wpf会与程序运行DPI计算,获得描绘大小;当开发在DPI96运行在windowsDPI为120的环境,描绘值(像素点个数)=程序设定值*120/96,这样描绘的实际大小几乎没有差别。
----------------------------------------------------------------------------------------
wpf ,窗口展示框架
对界面使用XAML语言编程,对控件的高度自定义。
-------------------------------------------------------------------------------------------
XAML
声明式编程语言。
xmal元素和特性,对应.net的对象和属性。
-----------------------------------------------------
XAML命名空间
在许多 XAML 文件的根标记中的命名空间声明内,通常可看到两个 XML 命名空间声明。 第一个声明默认映射整个 WPF 客户端/框架 XAML 命名空间:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
第二个声明映射单独的 XAML 命名空间,(通常)将其映射到 x:
前缀。
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
这些声明之间的关系是 x:
前缀映射支持 XAML 语言定义中的内部函数,并且 WPF 是将 XAML 用作语言并为 XAML 定义对象词汇的一种实现。 因为 WPF 词汇用法远比 XAML 内部函数用法常见,因此默认映射 WPF 词汇。
此 SDK 内,映射 XAML 语言内部函数支持的 x:
前缀约定后跟项目模板、示例代码和语言功能文档。 XAML 命名空间定义许多常用功能,即使对于基本 WPF 应用程序而言,这些功能也是必需的。 例如,若要通过分部类将任何代码隐藏加入到 XAML 文件,必须将该类命名为相关 XAML 文件根元素中的 x:Class
属性。 或者,XAML 页面中定义的任何要作为键控资源访问的元素都应在当前元素上设置 x:Key
属性。
------------------------------------------------------------------------------------------------------------------------------------
属性元素
<Button Width="10" Height="10"/>
属性可以直接使用元素名=“值”的方式设置。也可以“属性元素”的方式设置值
<Button>
<Button.Width>
10
</Button.Width>
<Button.Height>
10
</Button.Height>
</Button>
第二种方式是为了对属性赋值复杂对象使用。
Button的显示内容可以是文本也可以是图形。
<Button>
<Button.Content>
<Rectangle Height="40" Width="40"/>
</Button.Content>
</Button>
---------------------------------------------------------------------------------------------------------------------
类型转换器
Xaml编辑中,对属性的赋值直接是字符串。<Button Width="10" Height="10" Background="YellowGreen"/>,系统如何转换适当的对象(值)给元素呢,Background是System.Windows.Meida.Brush类,怎么与YellowGreen“”字符串相关联。这里就需要类型转换器,把字符串转换会想要的数据类型。可以为自定义数据类型写类型转换器。
----------------------------------------------------------------------------------------------------------------------
标记扩展
对元素赋值更复杂的数据对象,
包括绑定扩展、动态资源扩展、多绑定扩展、静态资源扩展、系统类型扩展(sys:)、标记扩展(x:)等。
<Button Height="10" Conten="{Binding Paht=Height , RelativeSource={RelariveSource Self}}">
标记扩展的代码卸载{}中间;入过要把{}当做字符使用,Conten="{}{Binding Paht=Height , RelativeSource={RelariveSource Self}}",增加一对{},后面的{}当做字符处理。{Binding Paht=Height , RelativeSource={RelariveSource Self}}会当做按钮文本显示。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】