WPF 从0开始写笔记,全属性功能深度剖析 20230510

news2024/10/6 16:16:41

文章目录

        • `FontFamily`
        • `FontWeight`
        • `ResizeMode`
        • `AllowsTransparency`
        • `Margin`
        • `CornerRadius`
        • `Border.effect`
        • `BlurRadius`
        • `direction`
        • `VerticalAlignment`
        • `TargetType`
        • `ControlTemplate`
        • `DataTemplate 和ControlTemplate的区别`
        • `Stroke`
        • `Path控件`
        • `Border`

FontFamily

在WPF中,FontFamily属性用于指定应用程序中文本使用的字体系列。它可以是单个字体名称、字体系列名称、字体文件路径或自定义字体集合的名称。

FontFamily属性通常与FontSize和Foreground属性一起使用,以定义应用程序中的文本样式。例如:

<TextBlock Text="Hello World" FontFamily="Segoe UI" FontSize="24" Foreground="Blue"/>

上述代码将设置文本块中的文本为“Hello World”,并使用Segoe UI字体系列和大小为24像素的蓝色字体颜色。

通过设置FontFamily属性,您可以确保应用程序中的文本始终使用相同的字体和字号,从而提高应用程序的可读性和一致性。

FontWeight

在WPF中,FontWeight属性用于指定字体的加粗程度。它可以是以下值之一:

  • List item

  • Light: 轻字重

  • Normal: 正常字重

  • Bold: 粗体

  • ExtraLight: 极轻字重

  • Black: 黑体

  • ExtraLight的作用是将字体设置为非常轻的字重,通常用于需要高对比度的设计元素,例如标签或按钮。与Bold相比,ExtraLight更加细微,因此更适合需要保持清晰可读性的设计。

ResizeMode

在WPF中,ResizeMode属性用于指定UI元素在被缩放或拉伸时的行为方式。它可以是以下值之一:

  • NoResize: 不进行大小调整。
  • MinimumSize: 保持到最小尺寸。
  • MaximumSize: 保持到最大尺寸。
  • Stretch: 等比例拉伸。
  • CenterOwner: 根据中心点对齐。
  • Anchor: 根据锚点对齐。
  • FlowChild: 根据流布局对齐。
    例如,以下代码将使一个按钮在被缩放时保持其纵横比不变:
<Button Width="100" Height="50" ResizeMode="NoResize"/>

上述代码将设置按钮的宽度和高度为100像素和50像素,并将其ResizeMode属性设置为NoResize,这意味着按钮将不会被缩放以适应其包含控件的大小变化。

AllowsTransparency

在WPF中,AllowsTransparency属性用于指定UI元素是否可以包含透明部分。如果该属性设置为true,则UI元素可以是透明的;否则,它将被视为完全不透明的。

例如,以下代码将创建一个具有一定透明度的按钮:

<Button Width="100" Height="50" AllowsTransparency="True"/>

上述代码将创建一个宽度为100像素,高度为50像素的按钮,并将其AllowsTransparency属性设置为True,这意味着该按钮可以包含一些透明部分。

需要注意的是,当一个UI元素被设置为透明时,其背景色将被忽略,因此需要使用其他方式来定义按钮的背景色。

Margin

在WPF中,Margin属性用于指定UI元素与其周围控件之间的空间。它可以是一个或多个(边距)元素的集合,每个(边距)元素都可以指定一个方向和一个值来定义UI元素与周围控件之间的距离。

例如,以下代码将创建一个具有上下各20像素、左右各10像素的上边框的按钮:

<Button Width="100" Height="50" Margin="20,10,0,0"/>

上述代码将创建一个宽度为100像素,高度为50像素的按钮,并使用Margin属性来定义其上边框。该Margin属性设置了四个方向上的值,分别指定了上下各20像素、左右各10像素的距离,从而定义了按钮的上边框。

需要注意的是,Margin属性只会影响UI元素与其周围控件之间的空间,而不会影响UI元素本身的大小或位置。如果需要同时调整UI元素的大小和位置,可以使用其他的布局属性(如Left、Top、Width和Height等)。

CornerRadius

在WPF中,CornerRadius属性用于指定UI元素的圆角半径。它可以是一个或多个(圆角半径)元素的集合,每个(圆角半径)元素都可以指定一个方向和一个值来定义UI元素的圆角大小。

例如,以下代码将创建一个具有左右两侧各10像素、上下两侧各20像素的圆角的按钮:

<Button Width="100" Height="50" CornerRadius="10,20,0,0"/>

上述代码将创建一个宽度为100像素,高度为50像素的按钮,并使用CornerRadius属性来定义其圆角。该属性设置了四个方向上的值,分别指定了左右两侧各10像素、上下两侧各20像素的圆角大小,从而定义了按钮的圆角效果。

需要注意的是,CornerRadius属性只会影响UI元素的圆角效果,而不会影响UI元素本身的大小或位置。如果需要同时调整UI元素的大小和位置,可以使用其他的布局属性(如Left、Top、Width和Height等)。

Border.effect

WPF中的Border.Effect属性用于指定边框的样式。以下是一些可用的选项:

  1. DropShadow:创建一个阴影效果,可以设置阴影的颜色、模糊半径和方向等参数。

  2. Transparent:创建一个透明边框效果。

  3. Emboss:创建一个浮雕效果,可以设置深度和光泽度等参数。

  4. Bevel:创建一个斜角边框效果,可以设置角度和宽度等参数。

  5. RoundedEdges:创建一个圆角边框效果,可以设置圆角的大小和样式等参数。

  6. ShadowOpacity:创建一个半透明阴影效果,可以设置阴影的透明度。

  7. Stroke:创建一个描边效果,可以设置描边的样式、颜色和宽度等参数。

BlurRadius

在WPF中,可以使用BlurRadius属性来指定元素的模糊半径。该属性是一个浮点型数值,用于控制元素周围的模糊程度。以下是一些常见的应用场景:

  1. 当需要模糊一个元素以使其与背景融合时,可以使用BlurRadius属性来调整模糊半径的大小。

  2. 当需要创建一个带有高斯模糊效果的图像时,可以使用BlurRadius属性来指定高斯模糊的半径大小。

  3. 当需要创建一个带有浅层阴影效果的元素时,可以使用BlurRadius属性来调整阴影的模糊程度。

需要注意的是,BlurRadius属性只对元素周围的区域产生影响,并不会改变元素本身的清晰度。如果需要增强元素的清晰度,可以考虑使用其他技术,如增加元素的分辨率或使用抗锯齿算法等。

Opacity

在WPF中,Opacity属性用于指定元素的不透明度。该属性是一个浮点型数值,取值范围为0.0到1.0之间,表示元素的透明度。以下是一些常见的应用场景:

  1. 当需要创建一个半透明的元素时,可以使用Opacity属性来调整元素的不透明度大小。

  2. 当需要创建一个带有遮罩效果的元素时,可以使用Opacity属性来控制遮罩的不透明度大小。

  3. 当需要创建一个渐变效果的元素时,可以使用Opacity属性来调整渐变的不透明度大小。

需要注意的是,Opacity属性只会影响元素的透明度,并不会改变元素的颜色或其他视觉效果。如果需要修改元素的颜色或其他视觉效果,可以考虑使用其他技术,如更改元素的样式或使用XAML转换器等。

direction

在WPF中,direction属性用于指定元素的模糊效果的方向。该属性是一个枚举类型,可以取以下值之一:

  1. Down:向下模糊。

  2. Left:向左模糊。

  3. Right:向右模糊。

  4. Up:向上模糊。

  5. None:不产生模糊效果。

可以使用direction属性来控制元素周围的模糊效果的方向,以达到不同的视觉效果。以下是一些常见的应用场景:

当需要创建一个带有倾斜效果的元素时,可以使用direction属性来调整模糊效果的方向。

当需要创建一个带有透视效果的元素时,可以使用direction属性来调整模糊效果的方向。

需要注意的是,direction属性只会影响元素周围的模糊效果的方向,并不会改变元素本身的颜色或其他视觉效果。如果需要修改元素的颜色或其他视觉效果,可以考虑使用其他技术,如更改元素的样式或使用XAML转换器等。

Grid.RowDefinitions中*的意思

            <Grid.RowDefinitions>
                <RowDefinition Height="1.8*"/>
                <RowDefinition Height="3*"/>
                <RowDefinition Height="60"/>
            </Grid.RowDefinitions>

总高度600,共定义了三行。最后一行固定60,自适应行(剩余两行)总高度540,将540分成4.8份,第一行占1.8份,第二行占3份,最后一行固定60。
第一行:60
第二行:540/4.83=337.5
第三行:540/4.8
1.8=202.5

在这里插入图片描述

VerticalAlignment

VerticalAlignment是WPF中一个枚举类型,用于指定文本、图像或其他UI元素在垂直方向上的对齐方式。以下是一些常见的VerticalAlignment值及其含义:

  • Top:顶部对齐。
  • Middle:居中对齐。
  • Bottom:底部对齐。
  • Baseline:基线对齐。
  • TextTop:文本顶部对齐。
  • TextBottom:文本底部对齐。
  • Stretch:拉伸对齐。
  • Center:居中对齐。
  • Inherit:继承父元素的垂直对齐方式。

可以使用VerticalAlignment属性来控制UI元素在垂直方向上的对齐方式,以达到不同的视觉效果。例如,可以将表格单元格的VerticalAlignment设置为Middle,使得单元格内容居中对齐。

TargetType

TargetType是.NET Framework中的一个属性,用于指定对象的类型。在WPF中,TargetType通常与DataTemplate一起使用,用于将一组数据绑定到UI元素上。

具体来说,当创建一个DataTemplate时,可以使用TargetType属性指定该模板所要绑定的对象类型。例如,假设我们有一个名为Person的类,其中包含姓名、年龄和性别等属性。我们可以创建一个DataTemplate来将这些属性绑定到UI元素上:

<DataTemplate DataType="{x:Type local:Person}">
    <StackPanel>
        <TextBlock Text="{Binding Name}" />
        <TextBlock Text="{Binding Age}" />
        <TextBlock Text="{Binding Gender}" />
    </StackPanel>
</DataTemplate>

ControlTemplate

ControlTemplate是WPF中一个用于定义用户界面元素(如按钮、文本框等)的模板。它包含了UI元素的外观和行为,并可以被应用到多个UI元素上。

具体来说,ControlTemplate由一系列的XAML指令组成,这些指令可以控制UI元素的外观、布局、样式和行为等方面。例如,下面是一个简单的ControlTemplate,用于定义一个带有两个标签的按钮:

<ControlTemplate x:Key="MyButtonTemplate">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>
        <StackPanel Orientation="Horizontal">
            <Label Content="{Binding Text}" />
            <Label Content="{Binding ToolTip}" />
        </StackPanel>
    </Grid>
</ControlTemplate>

在这个例子中,我们定义了一个包含两个标签的StackPanel控件,其中第一个标签绑定了按钮的文本内容,第二个标签绑定了按钮的提示信息。然后我们使用ColumnDefinition来定义一个宽度为Auto的列,用于放置第二个标签。最后,我们将整个控件包装在一个Grid中,以便可以设置其大小和位置。

当该模板被应用到一个按钮对象时,它的外观和行为就会根据模板中的指令进行设置。例如,如果我们在模板中定义了一个名为"Background"的背景图像,那么这个按钮就会显示这个图像。如果我们在模板中定义了一个名为"Foreground"的前景色,那么这个按钮的前景色就会变成这个颜色。这样,我们就可以轻松地创建自定义的用户界面元素,而无需手动编写每个元素的外观和行为代码。

DataTemplate 和ControlTemplate的区别

DataTemplate和ControlTemplate都是WPF中用于定义用户界面元素(如按钮、文本框等)的模板,但它们之间有一些区别。

  1. 用途不同:DataTemplate主要用于定义数据绑定的模板,它将一个数据对象的属性绑定到UI元素上,并根据该数据对象的不同值来显示不同的UI元素。而ControlTemplate主要用于定义自定义的用户界面元素的外观和行为,它可以控制UI元素的大小、位置、样式、动画等方面。

  2. 复杂度不同:由于DataTemplate只需要绑定一个数据对象的属性,因此它的实现相对简单。而ControlTemplate需要绑定多个UI元素的属性,并且需要对这些元素进行布局、样式和动画等方面的控制,因此它的实现相对复杂。

  3. 使用场景不同:DataTemplate通常用于绑定数据列表或网格视图中的数据,以便在视觉上呈现不同的数据项。而ControlTemplate通常用于创建自定义的用户界面元素,例如按钮、开关、进度条等。

总之,DataTemplate和ControlTemplate都是WPF中重要的模板类型,它们各自适用于不同的场景和需求。在使用时需要根据具体情况选择合适的模板类型。

Stroke

在WPF中,Stroke是一个属性,用于设置UI元素的边框或轮廓线。

当您设置UI元素的Stroke属性时,您指定围绕元素的边框的视觉表示。这可以包括颜色、厚度和样式(例如虚线、点线或实线)。

以下是在XAML中使用Stroke属性的示例:

<Rectangle x:Name="myRect" Width="100" Height="100" Stroke="Red" StrokeThickness="2">
    <Rectangle.Fill>
        <SolidColorBrush Color="White"/>
    </Rectangle.Fill>
</Rectangle>

在这个例子中,我们创建了一个带有红色描边的矩形,并设置了白色填充。StrokeThickness属性设置描边的宽度,而Fill属性设置矩形内部的颜色。

Path控件

<Path Data="M0  0 12 12M0 12 12 0" Stroke="White" StrokeThickness="1" VerticalAlignment="Center" HorizontalAlignment="Center"></Path>

这是一个WPF的Path控件,用于绘制一个形状。具体来说,它绘制了一个矩形,其中:

  • Data属性指定了路径的数据行,即矩形的坐标和线条样式等信息。
  • Stroke属性设置了矩形的边框颜色为白色。
  • StrokeThickness属性设置了矩形边框的宽度为1。
  • VerticalAlignment和HorizontalAlignment属性分别设置了矩形在垂直和水平方向上对齐的方式,这里都设置为Center,表示居中对齐。
    因此,这个Path控件绘制了一个居中对齐、边框为白色、宽度为1的矩形。

Border

WPF Border是一个用于定义用户界面元素边框的可视效果的元素。它可以用于任何WPF控件,如按钮、文本框、标签等,以添加视觉上的边框效果。

Border通常由以下几个部分组成:

  1. BorderBrush:指定边框的颜色。
  2. BorderThickness:指定边框的宽度。
  3. CornerRadius:指定角落的圆弧半径。
    Border可以通过多种方式设置其外观,例如使用SolidColorBrush、LinearGradientBrush、RadialGradientBrush等填充颜色,或者使用Thickness、Double、Float等数值来控制边框的宽度和厚度。此外,Border还支持各种其他的属性和事件,例如BorderBrushChanged、BorderThicknessChanged等,以便在需要时动态地更新边框的外观。

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

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

相关文章

5月第1周榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩平台)发布!

飞瓜轻数发布2023年5月1日-5月7日飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营能力强的B站…

【C++】类型转换-static_cast、reinterpret_cast、const_cast、dynamic_cast

文章目录 1. C语言中的类型转换2. 为什么C需要四种类型转换3. C强制类型转换static_castreinterpret_castconst_castdynamic_cast 4.explicit5.RTTI6.考点 1. C语言中的类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回…

网易云信 RTC 音频问题排查的挑战与实践

背景与挑战 实时通信&#xff08;Real-Time Communication&#xff0c;RTC&#xff09;音频技术是指将音频流实时传输到远程用户的技术&#xff0c;满足线上实时交互的诉求&#xff0c;广泛应用于在线教育、视频会议、直播、泛娱乐社交、金融、医疗、政企等场景。在 RTC PaaS…

组件通信的几种方式

组件通信的几种方式 父组件向子组件传值 在父组件中用自定义组件进行传值&#xff0c;自定义属性写到父组件调用子组件的那个标签中。在子组件中用props进行接收&#xff0c;props写到子组件中与data同级&#xff0c;props是一个数组&#xff0c;内容就是自定义属性的名字。 …

SD nand 与 SD卡的SPI模式驱动

文章目录 SD nand 与 SD卡的SPI模式驱动 1. 概述 2. SPI接口模式与SD接口模式区别 2.1 接口模式区别 2.2 硬件引脚 2.3 注意事项 3. SD接口协议 3.1 命令 3.1.1 命令格式 3.1.2 命令类型 3.2 响应 3.2.1 响应格式 4. SD nand&#xff08;SD卡&#xff09;结构描述…

内网渗透之域环境信息搜集

1.查看是否为域环境 net config workstation下面命令能否执行成功和computer brower服务是否开启有关 net view /domain2.查询域内的用户和组 查询域内的所有用户 net user /domain查询域内的所有用户(需要在域控上敲) dsquery user查询域内的某个用户 net user dbadmin /d…

代码随想录算法训练营day36 | 435. 无重叠区间,763.划分字母区间,56. 合并区间

代码随想录算法训练营day36 | 435. 无重叠区间&#xff0c;763.划分字母区间&#xff0c;56. 合并区间 435. 无重叠区间763.划分字母区间56. 合并区间总结 435. 无重叠区间 教程视频&#xff1a;https://www.bilibili.com/video/BV1A14y1c7E1/?spm_id_from333.788&vd_sou…

【Linux】安装node-v16.17.0-linux

【Linux】安装node-v16.17.0-linux 1 下载node-v16.17.0-linux-x64.tar.xz 下载地址&#xff1a;https://nodejs.org/zh-cn 2 解压文件 cd 到node-v16.17.0-linux-x64.tar.xz所在的路径 xz -d node-v16.17.0-linux-x64.tar.xz tar -xvf node-v16.17.0-linux-x64.tar 3 软…

vue2 框架运行原理剖析系列(一)之 new Vue()实例化过程到底做了什么!!!

一、vue 基础用法 1.1 引入vue 1.2 使用vue语法编写ui 1.3 实现数据绑定 示例代码如下 <div id"app">{{ message }} </div> <script> var app new Vue({el: #app,data: {message: Hello Vue!} }) </script>1.4 代码效果&#xff1a;使用浏…

4114 Flipping Game

4114 Flipping Game PTA | 程序设计类实验辅助教学平台 思路&#xff1a;我们定义f[i][j]表示当前已经进行了i轮&#xff0c;并且当前的两个串的不同的数的个数是j&#xff0c;就接下来我们考虑状态转移&#xff0c;首先是假设我们在不同的中挑选了x个进行反转&#xff0c;则需…

Go语言学习查缺补漏ing Day4

Go语言学习查缺补漏ing Day4 一、掌握iota的使用 请看下面这段代码&#xff1a; package mainimport "fmt"const (a iota_bc "ReganYue"dd1e iotaf iota )func main() {fmt.Println(a, b, c, d, d1, e, f) }思考一下输出结果会是什么&#xff1f; …

评价指标通俗解释:什么是准确率、精确率、召回率、F1得分

y_true [1, 1, 1, 1, 1, 0, 0, 0, 0, 2] y_pred [1, 1, 0, 1, 1, 1, 0, 1, 0, 2]以上述类别 1 为例&#xff1a; 准确率 accuracy 总体概念&#xff0c;指所有样本中预测正确的比例&#xff1a;7/10 0.7 精确率 precision 预测标签为 1 的样本中确实为 1 的比例&#xf…

数字化战略,如何解读企业财务报表

01 财务数字化管理 第一&#xff0c;财务基本信息化建设。比如财务系统、财务共享中心等通过数字化的手段提升财务会计核算、财务流程管理效率&#xff0c;解决流程性管理的问题。 第二&#xff0c;利用各类商业智能 BI 分析、数据分析的手段把企业的所有行为都进行量化对比&…

开源之夏2023 | 欢迎申请openEuler Embedded SIG开发任务

关于开源之夏 开源之夏是开源软件供应链点亮计划下的暑期活动&#xff0c;由中科院软件研究所与openEuler社区联合主办&#xff0c;旨在鼓励在校学生积极参与开源软件的开发维护&#xff0c;促进优秀开源软件社区的蓬勃发展。 活动联合各大开源社区&#xff0c;针对重要开源软件…

国资委检查再升级,用友全球司库敏捷响应

政策支持&#xff0c;央企司库建设提速 司库管理体系建设是中央企业加快建设世界一流企业的重要战略举措。近年来&#xff0c;财政部、国资委高度重视中央企业司库管理工作。 2021年至今&#xff0c;财政部、国资委陆续出台一系列强化中央企业资金管理的文件&#xff0c;针对央…

软件架构:DSL领域特定语言初探

所谓DSL领域专用语言(domain specific language / DSL)&#xff0c;其基本思想是“求专不求全”&#xff0c;不像通用目的语言那样目标范围涵盖一切软件问题&#xff0c;而是专门针对某一特定问题的计算机语言。DSL之于程序员正如伽南地之于以色列人&#xff0c;是最初也是最终…

常用的python gpu加速方法

在使用 PyCharm进行机器学习的时候&#xff0c;我们常常需要自己创建一些函数&#xff0c;这个过程中可能会浪费一些时间&#xff0c;在这里&#xff0c;我们为大家整理了一些常用的 Python加速方法&#xff0c;希望能给大家带来帮助。 在 Python中&#xff0c;我们经常需要创建…

SpringBoot ( 三 ) 转页

2.4.转页 2.4.1.内部转页 forward 2.4.1.1.转页配置 在 配置文件 resources > application.properties 中可以找到转页的配置信息, 这些是SpringBoot的默认配置, 是可以省略不写在配置文件中的 2.4.1.2.准备页面 在 resources 文件夹下 创建新文件夹 templates , 这个文…

Mysql索引简介、性能分析、以及慢查询日志

一、索引简介 1.mysql索引是什么 MySQL官方对索引的定义为&#xff1a;索引(Index)是帮助MySQL高校获取数据的数据结构。 索引的本质是&#xff1a;数据结构。可以简单理解为“排好序的快速查找数据结构”。 2.索引的方法 1.BTREE 索引&#xff1a;主要的实现是通过一个平…

翻遍GitHub帮你总结了一份并发图册+高并发笔记,一次性搞懂并发编程

前言 现在的面试&#xff0c;动不动就是“三高”&#xff0c;Java并发编程已然成为名企大厂面试的必考问题&#xff0c;其重要性不⾔⽽喻。 我也问了一些面试官&#xff0c;他们说&#xff1a;很多面试者&#xff0c;最基本的Java内存模型和JVM内存结构都分不清楚&#xff0c…