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://www.mzph.cn/bicheng/2122.shtml

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

相关文章

Python读取influxDB数据库(二)(influxDB2.X版本)

1. influxDB连接 首先在浏览器中输入influxDB的IP和端口&#xff0c;然后输入账号密码进入到influxDB数据库来进行数据的相关操作&#xff1a; 里面的bucket相当于sql中的数据库&#xff0c;_measurement相当于sql中的表 2. 获取influxDB数据库的token方法 3. 写查询语句来查询…

【C++学习】STL之空间配置器之一级空间配置器

文章目录 &#x1f4ca;什么是空间配置器✈STL 提供六大组件的了解&#x1f440;为什么需要空间配置器&#x1f44d;SGI-STL空间配置器实现原理&#x1f302;一级空间配置器的实现 &#x1f4ca;什么是空间配置器 空间配置器&#xff0c;顾名思义就是为各个容器高效的管理空间…

关于Developers网站的一些使用分享

Android Developers 官网使用分享 语音切换android studio 版本下载最新版本下载位置历史版本下载位置 android studio 版本和 AGP 对应关系API 和 android studio 版本和 AGP 对应关系android studio 版本android 版本API levelandroid.hardware.camera2 语音切换 Developers…

Vue3引入高德地图js API 2.0

文章目录 前言一、地图加载1.本文准备环境2.引入库3.加载地图4.加载地图控件 二、POI搜索1.什么是poi搜索2.如何使用 三、绘制点标记与信息窗体1.场景描述2.案例3.信息窗体-链接路由跳转4.进阶-通过Marker自动触发标记点&#xff08;非鼠标手动点击&#xff09; 四、jsApi地图事…

SQL-DML数据操纵语言(Oracle)

文章目录 DML数据操纵语言常见的字段属性字符型字段属性char(n)varchar2(n)/varchar(n) 数值型字段属性number([p],[s]int 日期型字段属性DATEtimestamp 如何查看字段属性增加数据INSERT快捷插入 删除数据DELETE修改数据UPDATE DML数据操纵语言 定义 是针对数据做处理&#xf…

vscode 解决无法创建临时文件。

报错&#xff1a; Fatal error: cant create C:\Users???y\AppData\Local\Temp\ccqkCS9j.o: No such file or directory 右击此 电脑 -> 属性 打开 系统信息 -> 高级系统设置 系统属性 -> 高级 -> 环境变量 将temp 和 tmp 改为其它英文路径 只更改用户变量…

docker-MySQL 8 主从搭建

一.目录结构&#xff1a; 我是在/home目录下&#xff0c;建立个sql文件夹&#xff1a; 二、配置文件 1.mysql配置 mysql-master下.conf文件配置 ###### [mysqld] server-id1 # 启用二进制日志 log-binmaster-bin # 指定需要复制的数据库 binlog-do-dbtest_db # 指定二进制日…

【STM32+HAL+Proteus】系列学习教程---RS485总线(收发仿真实现)

实现目标 1、掌握UART/USART/RS485等几个常见概念的区别 2、掌握RS485的逻辑电平、硬件接线等基础知识 3、具体实现目标&#xff1a;1、利用两个单片机组成RS485通信网络&#xff1b;2、两个单片机之间能实现正常收发数据。 一、串口、RS485等之间的关系 串口&#xff1a;是…

Redis入门到通关之数据结构解析-ZipList

文章目录 ☃️概述☃️ZipListEntry☃️Encoding编码☃️ZipList的连锁更新问题☃️总结 欢迎来到 请回答1024 的博客 &#x1f353;&#x1f353;&#x1f353;欢迎来到 请回答1024的博客 关于博主&#xff1a; 我是 请回答1024&#xff0c;一个追求数学与计算的边界、时间与…

Leetcode 118 杨辉三角

目录 一、问题描述二、示例及约束三、代码方法一&#xff1a;数学 四、总结 一、问题描述 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。   在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 二、示例及约束 示例 1&#xff1a…

python中开发页面的两种方法:Qt Designer(PyQt图形化界面拖拽开发App界面)以及Django(开发Web应用框架)

一、开发独立的窗口&#xff0c;App的那种&#xff0c;可使用tkinter或者PyQt 使用PyQt时&#xff0c;里面有个工具Qt Designer&#xff0c;是一个可视化的界面设计工具&#xff0c;可以通过拖拽等方式来设计界面。下面就是Qt Designer的操作界面&#xff1a; 参考链接如下&am…

跨境电商测评攻略:如何安全有效地提升业绩?

跨境电商做久了&#xff0c;卖家都会陷入一个困境&#xff0c;到底是该坚持慢慢做好&#xff0c;还是要测评? 有卖家表示&#xff0c;美客多基本的操作如果熟练了之后&#xff0c;就不用在运营上费太多功夫 这时候要好好规划一下测评的事情&#xff0c;做美客多到最后你会发…

力扣数据库题库学习(4.22日)

577. 员工奖金 问题链接 思路分析 Employee表与Bonus表通过empId字段可以连接&#xff0c;需求是查出奖金少于1000的员工名和奖金值。 这里奖金少于1000的情况就是没有奖金有奖金但少于1000 这里我给出的解决方案就是使用左连接&#xff0c;将Employee表作为左表&#xff…

arm架构,django4.2.7适配达梦8数据库

【Python相关包版本信息】 Django 4.2.7 django-dmPython 3.1.7 dmPython 2.5.5 【达梦数据库版本】 DM Database Server 64 V8 DB Version: 0x7000c 适配过程中发现的问题如下&#xff1a; 错误一&#xff1a;d…

解决IDEA调试方法进不去与数据看不到的问题

问题场景&#xff1a; 最近使用IDEA调试的时候&#xff0c;发现JDK有些方法**步进(F7)**无法进入&#xff0c;有些类的字段值也看不到。 原因分析&#xff1a; 提示&#xff1a;IDEA为了提升调试效率&#xff0c;以及突出调试数据的显示效果&#xff0c;会默认帮我们做一些筛选…

PAT——1007素数对猜想(C++)

问题描述&#xff1a; 让我们定义为&#xff1a;​&#xff0c;其中​是第i个素数。显然有d1​1&#xff0c;且对于n>1有​是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。 现给定任意正整数 N (<10^5)&#xff0c;请计算不超过 N 的满足猜想的素数对的个…

# 从浅入深 学习 SpringCloud 微服务架构(四)Ribbon

从浅入深 学习 SpringCloud 微服务架构&#xff08;四&#xff09;Ribbon 段子手168 一、ribbon 概述以及基于 ribbon 的远程调用。 1、ribbon 概述&#xff1a; Ribbon 是 Netflixfa 发布的一个负载均衡器,有助于控制 HTTP 和 TCP客户端行为。 在 SpringCloud 中 Eureka …

Flutter 插件站新升级: 加入优秀 GitHub 开源项目

Flutter 插件站新升级: 加入优秀 GitHub 开源项目 视频 https://youtu.be/qa49W6FaDGs https://www.bilibili.com/video/BV1L1421o7fV/ 前言 原文 https://ducafecat.com/blog/flutter-awesome-github-repo-download 这几天晚上抽空把 Flutter 插件站升级&#xff0c;现在支…

qt实现不定数量的按钮向前向后移动展示

按钮模拟移动 引言示例代码第一种思路开发环境代码结构实现代码第二种思路开发环境实现代码第三种思路开发环境实现代码总结引言 此文主要记录用qt实现按钮的移动,具体效果如下: 模拟按钮移动效果 示例代码 本文记录了三种实现方式。 第一种 思路 用动态数组vector存放创…

【python项目推荐】键盘监控--统计打字频率

原文&#xff1a;https://greptime.com/blogs/2024-03-19-keyboard-monitoring 代码&#xff1a;https://github.com/GreptimeTeam/demo-scene/tree/main/keyboard-monitor 项目简介 该项目实现了打字频率统计及可视化功能。 主要使用的库 pynput&#xff1a;允许您控制和监…