WPF4 数据模板

数据模板

数据模板常用在3种类型的控件, 下图形式:
在这里插入图片描述
1.Grid这种列表表格中修改Cell的数据格式, CellTemplate可以修改单元格的展示数据的方式。

2.针对列表类型的控件, 例如树形控件,下拉列表,列表控件, 可以修改其中的ItemTemplate。

3.修改ContentTemplate, 例UserControl控件的数据展现形式。

示例1:

定义一个ListBox

<Grid><ListBox x:Name="list"></ListBox>
</Grid>

点击查看代码,添加元素内容
在这里插入图片描述

namespace WpfApp1
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();for (int i = 0; i < 10; i++) {list.Items.Add(new ListBoxItem(){Content = new TextBlock(){Text = i.ToString()}});}}}
}

运行结果:
在这里插入图片描述
添加色块

    <Grid><ListBox x:Name="list"><ListBoxItem><StackPanel Orientation="Horizontal"><Border Width="20" Height="20" Background="Red"/><TextBlock Margin="10,0" Text="red"/></StackPanel></ListBoxItem><ListBoxItem><StackPanel Orientation="Horizontal"><Border Width="20" Height="20" Background="Red"/><TextBlock Margin="10,0" Text="red"/></StackPanel></ListBoxItem><ListBoxItem><StackPanel Orientation="Horizontal"><Border Width="20" Height="20" Background="Red"/><TextBlock Margin="10,0" Text="red"/></StackPanel></ListBoxItem></ListBox></Grid>
</Window>

在这里插入图片描述

数据模板

我们希望定义一个数据模板,实现统一控制

<Grid><ListBox x:Name="list"><ListBox.ItemTemplate><DataTemplate><StackPanel Orientation="Horizontal"><Border Width="20" Height="20" Background="Red"/><TextBlock Margin="10,0" Text="red"/></StackPanel></DataTemplate></ListBox.ItemTemplate></ListBox>
</Grid>

后台代码

namespace WpfApp1
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();List<int> test = new List<int>();for (int i = 0; i < 10; i++){test.Add(i);}list.ItemsSource = test;   }}
}

运行结果
在这里插入图片描述
此时,所有生成的数据,都是使用的同一模板

绑定

<Grid><ListBox x:Name="list"><ListBox.ItemTemplate><DataTemplate><StackPanel Orientation="Horizontal"><Border Width="20" Height="20" Background="{Binding Code}"/><TextBlock Margin="10,0" Text="{Binding Name}"/></StackPanel></DataTemplate></ListBox.ItemTemplate></ListBox>
</Grid>

后台代码

public partial class MainWindow : Window
{public MainWindow(){InitializeComponent();List<color> test = new List<color>(); test.Add(new color() { Code = "#FFB6C1",Name = "浅粉红" }); test.Add(new color() { Code = "#FFCOCB",Name ="粉红"}); test.Add(new color() { Code = "#DC143C", Name = "深红(猩红)" }); test.Add(new color() { Code = "#FFF0F5", Name = "淡紫红" }); list.ItemsSource = test;}public class color {public string Code { get; set; }public string Name { get; set; }}
}

运行结果
在这里插入图片描述
数据来驱动UI显示

示例2

<Grid><!--AutoGenerateColumns自动生成改为FALSE 防止有多余的列--><DataGrid x:Name="grid" AutoGenerateColumns="False"><DataGrid.Columns><DataGridTextColumn Binding="{Binding Code}" Header="Code"/><DataGridTextColumn Binding="{Binding Name}" Header="Name"/><DataGridTextColumn  Header="操作"/></DataGrid.Columns></DataGrid>
</Grid>

后台代码

public partial class MainWindow : Window
{public MainWindow(){InitializeComponent();List<color> test = new List<color>(); test.Add(new color() { Code = "#FFB6C1",Name = "浅粉红" }); test.Add(new color() { Code = "#FFCOCB",Name ="粉红"}); test.Add(new color() { Code = "#DC143C",Name = "深红(猩红)" }); test.Add(new color() { Code = "#FFF0F5",Name = "淡紫红" });grid.ItemsSource = test;}public class color {public string Code { get; set; }public string Name { get; set; }}
}

运行结果
在这里插入图片描述
在列中 放 按钮的情况

<Grid><!--AutoGenerateColumns自动生成改为FALSE 防止有多余的列--><DataGrid x:Name="grid" AutoGenerateColumns="False"><DataGrid.Columns><DataGridTextColumn Binding="{Binding Code}" Header="Code"/><DataGridTextColumn Binding="{Binding Name}" Header="Name"/><!--添加数据模板--><DataGridTemplateColumn Header="操作"><DataGridTemplateColumn.CellTemplate><DataTemplate><StackPanel><Border Width="10" Height="10" Background="{Binding Code}"/><TextBox Margin="10,0" Text="{Binding Name}"/></StackPanel></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn></DataGrid.Columns></DataGrid>
</Grid>

运行结果
在这里插入图片描述
添加按钮

<Grid><!--AutoGenerateColumns自动生成改为FALSE 防止有多余的列--><DataGrid x:Name="grid" AutoGenerateColumns="False"><DataGrid.Columns><DataGridTextColumn Binding="{Binding Code}" Header="Code"/><DataGridTextColumn Binding="{Binding Name}" Header="Name"/><!--添加数据模板--><DataGridTemplateColumn Header="操作"><DataGridTemplateColumn.CellTemplate><DataTemplate><!--只允许有一个容器,所以需要一个容器包装多个按钮--><StackPanel Orientation="Horizontal"><Button Content="删除"/><Button Content="复制"/><Button Content="保存"/></StackPanel><!--<StackPanel><Border Width="10" Height="10" Background="{Binding Code}"/><TextBox Margin="10,0" Text="{Binding Name}"/></StackPanel>--></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn></DataGrid.Columns></DataGrid>
</Grid>

运行结果
在这里插入图片描述

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

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

相关文章

Linux RTC驱动深入解析

目录标题 实时时钟&#xff08;RTC&#xff09;基础Linux内核中的RTC框架RTC设备类设备树&#xff08;Device Tree&#xff09; 编写Linux RTC驱动1. 初始化和注册2. RTC设备操作函数3. 清理函数 测试RTC驱动驱动开发的挑战总结 在许多嵌入式系统和服务器上&#xff0c;实时时钟…

图像哈希:全局+局部提取特征

文章信息 作者&#xff1a;梁小平&#xff0c;唐振军期刊&#xff1a;ACM Trans. Multimedia Comput. Commun. Appl&#xff08;三区&#xff09;题目&#xff1a;Robust Hashing via Global and Local Invariant Features for Image Copy Detection 目的、实验步骤及结论 目…

STM32的端口引脚的复用功能及重映射功能解析

目录 STM32的端口引脚的复用功能及重映射功能解析 复用功能 复用功能的初始化 重映射功能 重映射功能的初始化 复用功能和重映射的区别 部分重映射与完全重映射 补充 STM32的端口引脚的复用功能及重映射功能解析 复用功能 首先、我们可以这样去理解stm32引脚的复用功能…

SpringBoot学习之Kafka发送消费消息入门实例(三十五)

使用Kafka之前需要先启动fKafka,如何下载安装启动kafka请先参考本篇文章的前两篇: 《SpringBoot学习之Kafka下载安装和启动【Windows版本】(三十四)》 《SpringBoot学习之Kafka下载安装和启动【Mac版本】(三十三)》 一、POM依赖 1、加入kafka依赖 2、我的整个POM代码…

Adobe Photoshop CC 2017无法打开解决方案

Adobe Photoshop CC 2017双击无反应&#xff0c;右键以管理员身份运行也没有反应 解决方案&#xff1a; 事件查看器中查看应用程序的事件 如果找到程序报错事件&#xff0c;网上下载ZXPSignLib-minimal.dll文件替换错误模块路径位置的该文件即可 ZXPSignLib-minimal.dll下载地…

SpringBoot+Vue开发记录(三)

说明&#xff1a;本篇文章的主要内容为需求分析。需求分析这一部分很重要&#xff0c;也稍微有点子难搞&#xff0c;所以本篇文章里的有些内容会有失偏颇。 一、准备步骤 我打算做一个刷题项目&#xff0c;但是具体这个项目该怎么做&#xff0c;我是一头雾水。 所以就要先进行…

pytorch-trainvaltest划分

目录 1. 上一节回顾2. 数据集划分3. 完整代码 1. 上一节回顾 下列图中三种曲线分别代表了欠拟合、好的拟合和过拟合 下图为过拟合曲线&#xff0c;那么如何来检测过拟合呢&#xff1f;将数据集划分为train和val&#xff08;validation&#xff09;val是用来测试训练过程是否过…

CSS 04

去掉 li 前面的 项目符号(小圆点) 语法 list-style: none;圆角边框 border-radius 属性用于设置元素的外边框圆角。 语法 border-radius:length;参数值可以为数值或百分比的形式如果是正方形&#xff0c;想要设置为一个圆&#xff0c;把数值修改为高度或者宽度的一半即可&a…

Opencv_11_通道的分离与合并

void ColorInvert::channels_demo(Mat& image) { std::vector<Mat> mv; split(image, mv); imshow("蓝色", mv[0]); imshow("绿色", mv[1]); imshow("红色", mv[2]); Mat dst; mv[0] 0; merge(mv, dst);…

【Camera KMD ISP SubSystem笔记】CRM V4L2驱动模型

1. CRM为主设备 /dev/video0&#xff0c;先创建 v4l2_device 设备&#xff0c;再创建 video_device 设备&#xff0c;最后创建 media_device 设备/dev/media0 v4l2_device的mdev指向media_device&#xff0c;v4l2_device的entity链接到media_device的entities上&#xff08…

WEB服务的配置与使用 Apache HTTPD

服务端&#xff1a;服务器将发送由状态代码和可选的响应正文组成的 响应 。状态代码指示请求是否成功&#xff0c;如果不成功&#xff0c;则指示存在哪种错误情况。这告诉客户端应该如何处理响应。较为流星的web服务器程序有&#xff1a; Apache HTTP Server 、 Nginx 客户端&a…

【debug记录】有gpu,但是 pytorch仍显示 cpu【原来是新电脑没安装cuda】

原来是新电脑没安装cuda&#xff0c;以为安装了pytorch包就可以了。 检查过程&#xff1a; nvcc 不是内部或外部命令&#xff0c;也不是可运行的程序, 说明没有安装cuda。 查看电脑显卡最高支持cuda版本&#xff1a;nvidia-smi 安装cuda&#xff0c;选择版本&#xff1a;ht…

Android Studio 报错:AVD Pixel_3a_API_30_x86 is already running

在我的Android Studio和虚拟机运行时&#xff0c;我的电脑不小心关机了&#xff0c;在启动后再次打开Android Studio并运行虚拟机时发现报错。 Error while waiting for device: AVD Pixel_3a_API_30_x86 is already running. If that is not the case, delete the files at C…

系统安全与应用(1)

目录 1、账号安全管理 &#xff08;1&#xff09;禁止程序用户登录 &#xff08;2&#xff09;锁定禁用长期不使用的用户 &#xff08;3&#xff09;删除无用的账号 &#xff08;4&#xff09;禁止账号和密码的修改 2、密码安全管理 设置密码有效期 1&#xff09;针对已…

《ElementPlus 与 ElementUI 差异集合》el-select 差异点,如:高、宽、body插入等

宽度 Element UI 父元素不限制宽度时&#xff0c;默认有个宽度 207px&#xff1b; 父元素有固定宽度时&#xff0c;以父元素宽度为准&#xff1b; Element Plus 父元素不限制宽度时&#xff0c;默认100%&#xff1b; 父元素有固定宽度时&#xff0c;以父元素宽度为准&#x…

【模电】常见经典运放电路(持续更新)

反相 反相输入比例电路 仿真文件 链接&#xff1a;https://pan.baidu.com/s/1nft1B3mgNpoPfgWo6pFE1g?pwdfpd2 提取码&#xff1a;fpd2 同相 同相输入比例电路 仿真文件 链接&#xff1a;https://pan.baidu.com/s/151OzVgJ2M1iLJ9GCH3xp_A?pwdelec 提取码&#xff1a;…

ROS1快速入门学习笔记 - 04创建工作环境与功能包

一、定义 工作空间(workspace)是一个存放工程开发相关文件的文件夹。 src:代码空间&#xff08;Source Space&#xff09;build: 编辑空间&#xff08;Build Space&#xff09;devel:开发空间&#xff08;Development Space&#xff09;install:安装空间&#xff08;Install …

OpenHarmony实战开发-页面布局检查器ArkUI Inspector使用指导

DevEco Studio内置ArkUI Inspector工具&#xff0c;开发者可以使用ArkUI Inspector&#xff0c;在DevEco Studio上查看应用在真机上的UI显示效果。利用ArkUI Inspector工具&#xff0c;开发者可以快速定位布局问题或其他UI相关问题&#xff0c;同时也可以观察和了解不同组件之间…

TiDB 6.x 新特性解读 | Collation 规则

对数据库而言&#xff0c;合适的字符集和 collation 规则能够大大提升使用者运维和分析的效率。TiDB 从 v4.0 开始支持新 collation 规则&#xff0c;并于 TiDB 6.0 版本进行了更新。本文将深入解读 Collation 规则在 TiDB 6.0 中的变更和应用。 引 这里的“引”&#xff0c;…

【服务器部署篇】Linux下Ansible安装和配置

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0c;产…