当前位置: 首页 > news >正文

WinUI:使用DataGrid控件显示表格

初级代码游戏的专栏介绍与文章目录-CSDN博客

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。

源码指引:github源码指引_初级代码游戏的博客-CSDN博客


        WinUI显示表格要用到社区工具包的DataGrid控件。

        这个表格是非常接近传统上的表格的。列头可以鼠标改变列宽度。上下左右方向键改变选中的单元格。

一、创建原始WinUI3项目

        编译运行就是个按钮:

 

二、nuget引入社区工具包

        搜一下这个CommunityToolkit.WinUI.UI.Controls.DataGrid:

        安装好就可以用了。

        xaml里引用名字空间:

	xmlns:controls="using:CommunityToolkit.WinUI.UI.Controls"

         后面就可以用“controls:DataGrid”来使用DataGrid了。

三、设置DataGrid

        在MainWindow.xaml里面添加DataGrid:

		<controls:DataGridx:Name="dataGrid"Height="600"Margin="12"Background="LightGray"BorderBrush="Black"BorderThickness="1"GridLinesVisibility="All"HorizontalGridLinesBrush="Blue"VerticalGridLinesBrush="Green"AutoGenerateColumns="True" />

        添加在Button后面好了。因为没有设置数据,所以运行起来只能得到一个竖线:

        如果不设置边框和背景色连竖线都没有。

        数据可以通过ItemsSource来绑定,也可以通过代码动态设置。

四、动态设置ItemsSource

        修改MainWindow.xaml.cs,定义数据源对象:

		public class Data{public String Data1 { get; set; }public int Data2 { get; set; }public String Data3 { get; set; }public Boolean Bool1 { get; set; }public Data(String str, int n,String str2, Boolean b){this.Data1 = str;this.Data2 = n;this.Data3 = str2;this.Bool1 = b;}public static List<Data> Datas(){return new List<Data>(new Data[4] {new Data("a", 1,"aaa",false),new Data("b",2,"bbb",false),new Data("c", 3,"ccc",true),new Data("d", 4,"ddd",true)});}}public List<Data> datas = Data.Datas();

        重点是得到一个List对象。

        在按钮事件添加设置数据源的代码:

        private void myButton_Click(object sender, RoutedEventArgs e){myButton.Content = "Clicked";dataGrid.ItemsSource = datas;}

        运行程序看效果:

        点击按钮之后表格显示了出来,注意边框、背景色、横线、竖线都是设置过的。用鼠标改变列宽:

         支持多选(按行),也可以用方向键改变选中单元格:

        双击编辑:

        可以吧?


(这里是文档结束) 

http://www.dtcms.com/a/248877.html

相关文章:

  • 打印机共享问题一键解决,附带设置维护工具
  • 会计-收入-3-关于特定交易的会计处理
  • Power Query动态追加查询(对文件夹下文件汇总)
  • SSM框架实现学生管理系统的需求分析与设计详解
  • 安科瑞亮相2025 SNEC国际太阳能光伏与智慧能源展
  • Mac电脑通过 IntelliJ IDEA 远程连接 MySQL 的详细教程
  • 一个模板元编程示例
  • 亚马逊Woot秒杀:引爆销量
  • Day 48
  • c++动态规划4——环形动态规划
  • 岛屿周长问题的三种解法:直接计数法、数学计算法与深度优先搜索
  • redis-7.4.4使用
  • 论索引影响性能的一面④ 索引失踪之谜【上】
  • 学习日记-day29-6.13
  • python+django/flask成都奥科厨具厂产品在线销售系统
  • Python学习(9) ----- Python的Flask
  • bytes转string
  • icg真的只能用latch不能用Flip-flop吗
  • 洛谷自己创建的一个小比赛【c++】
  • PCB设计教程【大师篇】stm32开发板PCB整体布局
  • Android13 新增 Stable AIDL接口
  • 传染病传播模拟:基于社会接触网络的疫情预测模型
  • django restframework 在serializer里 通过context设置session
  • 在ros中动态调整雷达,线激光雷达等设备的静态坐标关系
  • 【Python教程】CentOS系统下Miniconda3安装与Python项目后台运行全攻略
  • Spring XML 常用命名空间配置
  • C语言预处理命令详解
  • LeetCode - 904. 水果成篮
  • 《 第三章-招式初成》 C++修炼生涯笔记(基础篇)程序流程结构
  • HE023784R23B530 PP D113 B01-25-111000: AC 800PEC 静态励磁系统UNITROL 6000 X-power