WPF常见控件(包含materialDesign)与属性

news/2024/10/6 2:18:10/文章来源:https://www.cnblogs.com/le-le-l/p/18288572

materialDesign:ColorZone: 用于在应用界面中创建有色区域,增加层级感和视觉吸引力。
materialDesign:DrawerHost:用于实现从屏幕一侧滑出的抽屉控件,经常与materialDesign:DrawerHost.LeftDrawerContent配套使用(这里的例子是设置左抽屉)。
DockPanel:布局控件,用于将其子元素排列在特定的方向上(顶部、底部、左侧、右侧或填充其余空间)。
StackPanel:堆叠控价(上下、左右)。
ToggleButton:用于表示一个按钮,它可以在两种状态之间切换(选中和未选中)。ToggleButton 是常规 Button 的扩展,它的 IsChecked 属性表示当前选中状态。
ListBox:显示列表数据,经常绑定数据上下文列表类型的数据。ListBox.ItemTemplate:用于定义每个项应该如何显示。ListBox.ItemsPanel:定义了列表中的项是如何布局的。
TextBlock:TextBlock 是一个用于显示文本的控件,TextBlock 是只读的。
TextBox:TextBox是一个用于显示文本的控件,TextBox可用于接受用户输入。
Grid:布局控件。
Border:用于在其子控件(只能有一个子元素)周围创建一个边框。Border 控件不仅可以设置边框的颜色、厚度和圆角,还可以设置背景颜色。这使得它成为一个非常有用的布局工具,用来增强视觉效果或分隔 UI 元素。
Canvas:根据绝对坐标定位子元素。

AllowsTransparency="True": 使得这个窗口可以有透明的效果并且没有传统的窗口边框。
WindowStyle="None": 这个属性定义了窗口边框的样式。设置为 None 表示窗口将没有标题栏和边框。经常与AllowsTransparency="True"配套使用,实现真正的无边框无内容窗口,假如WindowStyle="None"单独使用,生成的窗口上面还是有一条白色的线条。
WindowStartupLocation="CenterScreen": 设置窗口居中
HorizontalAlignment="Center":水平居中
VerticalAlignment="Center":垂直居中

TemplateBinding和Binding

TemplateBinding

TemplateBinding 是一种简化版的数据绑定,通常用于 ControlTemplate 内部。TemplateBinding 是一种优化的、高性能的绑定方式,但是它具有一定的限制。它只能用于父控件的属性和它在控件模板内部的子元素之间的绑定,并且是单向的从父控件到子元素。

<ControlTemplate TargetType="Button"><Border Background="{TemplateBinding Background}"><!-- ... --></Border>
</ControlTemplate>

在这个例子中,Border 控件的 Background 属性通过 TemplateBinding 绑定到它所在模板的目标 Button 控件的 Background 属性。这意味着当按钮的背景改变时,模板中对应的边框背景也会改变。

Binding

Binding 是一种更通用、功能更为强大的绑定机制。它允许从任何类型的数据源绑定到任意属性,并且支持双向绑定、转换器、路径导航、数据源更新触发器等高级功能。

<TextBox Text="{Binding Path=UserName, UpdateSourceTrigger=PropertyChanged}" />

在这个例子中,TextBox 控件的 Text 属性与绑定上下文(例如视图模型)中的 UserName 属性相关联。当用户输入时,UserName 属性会随之更新,反之亦然。

总结

  • 当你需要在控件模板中快速绑定到拥有该模板的控件的属性,并且不需要高级绑定功能时,使用 TemplateBinding
  • 当你需要从各种数据源进行绑定、需要使用数据转换或者需要数据绑定的更丰富特性时,使用 Binding

注意

TemplateBinding 只能在 ControlTemplateDataTemplate 中使用,而 Binding 可以在模板内外使用,是一个更通用的绑定手段。

ControlTemplate(一般在定义样式中使用)和DataTemplate(一般在ItemTemplate中使用):

DataTemplate(一般在ItemTemplate中使用):

  • DataTemplate用于定义如何显示数据对象当你绑定一个数据对象到某个控件时,DataTemplate决定了这个对象应该如何呈现在UI中。
  • 通常,DataTemplate用在像ListBoxListViewItemsControl这样的项控件中。这样,每当集合中有新项时,DataTemplate就会被应用到这些新的数据项上。
  • 你可以使用DataTemplate来定义一组控件,比如TextBlock, Button等,来展示绑定数据的不同属性。

例子: 自定义显示人员信息的DataTemplate

<ListBox x:Name="PeopleListBox"><ListBox.ItemTemplate><DataTemplate><StackPanel Orientation="Horizontal"><TextBlock Text="{Binding Name}" FontWeight="Bold" /><TextBlock Text=" (" /><TextBlock Text="{Binding Age}" Foreground="Blue" /><TextBlock Text=" years old)" /></StackPanel></DataTemplate></ListBox.ItemTemplate>
</ListBox>

在这个例子中,ListBox中的每个列表项都由一个StackPanel表示,其中展示了人员的姓名(Name)和年龄(Age),数据来自于绑定到ListBox的数据源。

ControlTemplate:

  • ControlTemplate定义了一个控件的整个视觉外观和行为。通过使用ControlTemplate,你可以彻底改变控件的外观,而不用改变它的功能
  • ControlTemplate可提供对控件的细粒度控制,甚至可以重新定义控件的结构。
  • ControlTemplate通常用于自定义标准WPF控件的外观,如ButtonCheckBoxSlider等。

例子: 自定义按钮的ControlTemplate

<Button Content="Click me"><Button.Template><ControlTemplate TargetType="Button"><Border Background="SkyBlue" CornerRadius="5"><ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" /></Border></ControlTemplate></Button.Template>
</Button>

在这个例子中,按钮的外观被自定义为带有圆角和天蓝色背景的样式,而按钮的基本功能和行为(如点击响应)保持不变。

结论

  • ControlTemplate 更多关注于控件本身的结构和外观,允许开发者重构整个控件的布局和样式。
  • DataTemplate 关注于数据的具体呈现方式,通常用于列表等集合控件中,定义集合内每个项的展示模板。

以上两者可以组合使用,实现复杂和高度自定义的UI表现。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于虚拟机的使用

1、从网上下载了Centos7 2024年CentOS镜像下载地址,包括CentOS官网、国内镜像下载,超详细教学,小白也能学会。-CSDN博客 2、通过VMware添加了该iso文件,打开虚拟机之后安装该系统就可以了 3、进入之后我们需要进行软件安装、安装位置、KDUMP、网络和主机名的修改操作其中,…

LSTUR论文阅读笔记

Neural News Recommendation with Long- and Short-term User Representations论文阅读笔记 这个同样是一篇很老但是比较经典的文章,这里来读一下 Abstract 存在的问题: ​ 用户通常既有长期偏好,也有短期兴趣。然而,现有的新闻推荐方法通常只学习用户的单一表征,这可能是…

实战篇——文件包含漏洞一

实战篇——文件包含漏洞(1) 本地文件包含 本地文件包含一般需要依赖文件上传漏洞。如果文件上传漏洞限制上传文件的后缀必须为.jpg,那么配合本地文件包含,就可以通过上传图片木马获得服务器权限。 上传图片木马:利用本地文件包含,成功连接一句话木马:可见本地文件包含最大…

XShell连接失败解决

实现:宿主机的 Windows 和虚拟机的 Linux 能够进行网络连接,同时虚拟机的 Linux 可 以通过宿主机的 Windows 进入互联网简而言之:Windows 和虚拟机的 Linux能够互相ping成功解决的问题:XShell连接不成功第一步:编辑 VMware 的网络配置然后全部点击确定,VMware 的网络配置…

基于负相关误差函数的4集成BP神经网络matlab建模与仿真

1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 MATLAB2022a3.部分核心程序while(Index<=Max_iteration) Indexjj=1; error2 = zeros(Len,KER);while(jj<=Len) for k=1:No;d(k)=T(jj); endfor i=1:NI;x(i)=P(jj,i);end%集成多个BP神经…

9、flask-会话-cookie

Cookie 客户端的会话技术: - cookie本身由浏览器保存,通过response将cookie写道浏览器上、下一次访问时、浏览器会根据不同的规则携带cookie过来特点: - 客户端的会话技术、浏览器的会话技术 - 数据全都是存储在客户端中 - 存储使用的键值对结构进行的存储 - 特性:- 支持过…

# Day02

1. #盘符转换 2. #查看当前目录下的所有文件 dir 3. #切换目录 cd change directory 4. #返回上一级 cd.. 5. #进入目录下的一级文件 先用第二步查看目录下的文件 然后cd+空格+一级文件名称 6 .#进入一级文件下的二级文件 方法同第五步 7. #清理屏幕 cls (简记clear screen) 8.…

dotnet WinUI3 Win2D 翻转图片

本文将告诉大家如何在 WinUI3 里面使用 Win2D 进行图片的翻转,本文的方法也适用于 UWP 框架图片的翻转在 Win2D 里面,可以使用 Transform2DEffect 特效来辅助实现,核心逻辑就是通过缩放矩阵当成2D翻转矩阵,将缩放的 X 和 Y 传入负数即可分别实现对应方向的翻转。比如左右水…

UWP WinUI 制作一个路径矢量图标按钮样式入门

本文将告诉大家如何在 UWP 或 WinUI3 或 UNO 里,如何制作一个路径按钮。路径按钮就是使用几何路径轮廓表示内容的按钮,常见于各种图标按钮,或 svg 系贴图矢量图按钮在网上有非常多矢量图库,其中免费的图库也非常多,比如 https://www.iconfont.cn/ 等等。在咱的应用程序里面…

【攻防技术系列+代理转发】工具--netcat

【需求】现在想要实现两个不同网段的私网之间相互通信,我们该如何做呢?🔴实验环境:【kali(攻击端)】:192.168.10.131 【centos7(跳板机)】:192.168.10.39;172.16.80.130 【win7】:172.16.80.131 工具:netcat【kali】: 开启监听【centos7】:【kali】: 获得对方的…

基于FPGA的A律压缩解压缩verilog实现,包含testbench

1.算法仿真效果 VIVADO2019.2仿真结果如下(完整代码运行后无水印):RTL图如下所示:2.算法涉及理论知识概要A律压缩是一种广泛应用于语音编码的非均匀量化技术,尤其在G.711标准中被欧洲和中国等国家采纳。该技术的核心目的是在有限的带宽下高效传输语音信号,同时保持较高的…