WPF的DataGrid简单使用

news/2025/2/22 4:41:09/文章来源:https://www.cnblogs.com/cfsl/p/18715986

  简单做个记录。有时候会忘记某个样式怎么调整;

 首先写一个DataGridAlternatingRowBackground表示隔行更改背景色;AlternationCount表示隔的行数;:

1 <DataGrid Grid.Row="1"
2           AlternatingRowBackground="Snow"
3           AlternationCount="2"
4           ItemsSource="{Binding Students}">
5 </DataGrid>       

再写ID列,Width是宽度比例,后面几列写法一样,更改下Header和Binding:

1 <DataGridTemplateColumn Width="*" Header="ID">
2     <DataGridTemplateColumn.CellTemplate>
3         <DataTemplate>
4             <Border BorderThickness="0 0 1 0" BorderBrush="LightGray">
5                 <TextBlock Text="{Binding ID}" VerticalAlignment="Center" HorizontalAlignment="Center"/>
6             </Border>
7         </DataTemplate>
8     </DataGridTemplateColumn.CellTemplate>
9 </DataGridTemplateColumn>

这个是输入框列这里注意下Text的Binding需要指定UpdateSourceTrigger,否则不会立即更改,但是我记得单独写TextBox默认就是立马触发的:

1 <DataGridTemplateColumn Width="1.2*" Header="Score">
2     <DataGridTemplateColumn.CellTemplate>
3         <DataTemplate>
4             <TextBox Text="{Binding Score,UpdateSourceTrigger=PropertyChanged}" FontWeight="Light" VerticalAlignment="Center" Margin="3 0 3 0"/>
5         </DataTemplate>
6     </DataGridTemplateColumn.CellTemplate>
7 </DataGridTemplateColumn>

这个是Edit列,里面是个Button,Command绑定的全局的委托命令,注意指定RelativeSource:

 1 <DataGridTemplateColumn Width="1*" Header="Edit">
 2     <DataGridTemplateColumn.CellTemplate>
 3         <DataTemplate>
 4             <Button Content="🖊" 
 5                     BorderThickness="0"
 6                     Background="Transparent"
 7                     VerticalAlignment="Center" 
 8                     HorizontalAlignment="Center" 
 9                     Command="{Binding DataContext.EditCommand, RelativeSource={RelativeSource AncestorType={x:Type UserControl} }}"
10                     />
11         </DataTemplate>
12     </DataGridTemplateColumn.CellTemplate>

最后写Style,美化下外观:

 1 <Style TargetType="DataGrid">
 2     <Setter Property="Width" Value="500"/>
 3     <Setter Property="VerticalAlignment" Value="Top"/>
 4     <Setter Property="AutoGenerateColumns" Value="False"/>
 5     <Setter Property="BorderThickness" Value="0"/>
 6     <Setter Property="RowHeaderWidth" Value="0"/>
 7     <Setter Property="CanUserAddRows" Value="False"/>
 8     <Setter Property="GridLinesVisibility" Value="None" />
 9     <Setter Property="Cursor" Value="Hand"/>
10     <Setter Property="SelectedIndex" Value="{Binding SelectedIndex}"/>
11 </Style>
AutoGenerateColumns:这个改为false就不会自动生成列了;RowHeaderWidth:改成0最左边的行标题就会消失;CanUserAddRows:改为false,最下面的空白行消失;GridLinesVisibility:默认的行列分割线消失;
 1 <Style TargetType="DataGridRow">
 2     <Setter Property="BorderThickness" Value=" 0 0 0 1"/>
 3     <Setter Property="BorderBrush" Value="LightGray"/>
 4     <Setter Property="Height" Value="25"/>
 5     <Setter Property="VerticalAlignment" Value="Center"/>
 6     <Style.Triggers>
 7         <Trigger Property="IsMouseOver" Value=" true">
 8             <Setter Property="Background" Value="#F0F8FF"/>
 9         </Trigger>
10     </Style.Triggers>
11 </Style>
这里设置鼠标移动后每行的颜色变化效果;
 1 <Style TargetType="DataGridCell">
 2     <Setter Property="BorderThickness" Value="0"/>
 3     <Style.Triggers>
 4         <Trigger Property="IsSelected" Value=" true">
 5             <Setter Property="Background" Value="LightCyan"/>
 6             <Setter Property="Foreground" Value="Blue"/>
 7             <Setter Property="FontWeight" Value="Bold"/>
 8         </Trigger>
 9     </Style.Triggers>
10 </Style>
这里设置选中某行后的效果,原来的蓝色太丑了;
 1 <Style TargetType="DataGridColumnHeader">
 2     <Setter Property="Height" Value="50"/>
 3     <Setter Property="Template">
 4         <Setter.Value>
 5             <ControlTemplate>
 6                 <Border Background="SkyBlue" BorderThickness="0 0 1 0" BorderBrush="LightGray">
 7                     <TextBlock Text="{Binding}" 
 8                                FontSize="15" 
 9                                FontWeight="Bold"
10                                Foreground="White"
11                                FontFamily="Times New Roman"
12                                VerticalAlignment="Center" 
13                                HorizontalAlignment="Center"/>
14                 </Border>
15             </ControlTemplate>
16         </Setter.Value>
17     </Setter>
18 </Style>
这里美化列标题样式,对模板进行编辑;

以上,在VM中写对应的Model即可;

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

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

相关文章

报名丨Computer useVoice Agent :使用 TEN 搭建你的 Mac Assistant

与 TEN 相聚在「LET’S VISION 2025」大会,欢迎来展位上跟我们交流。这次我们还准备了一场聚焦「computer use」的工作坊,功能新鲜上线,线下首波体验!📅 TEN 展位:2025年3月1日-2日TEN workshop:2025年3月2日 13:30开始📍 上海浦东鲜花港TEN Framework 是一个主流对话…

本地AI搭建

搭建本地博客AI 目录搭建本地博客AI环境下载ollama选择模型选择embedding模型查看性能测试选择合适的嵌入模型(Embedder)估算内存选择模型量化类型介绍Q5_0 vs Q5_KQ5_K 变体(Q5_K_S、Q5_K_M、Q5_K_L)选择LLM模型下载模型下载LLM下载Embedder下载AnythingLLM配置向量数据库测试…

无需编码5分钟免费部署云上调用满血版DeepSeek

大家好,我是 V 哥。如何自己部署DeepSeek调用满血版。首先,如果你遇到了使用公共服务器时的延迟或限制,想要本地部署以获得更好的性能和稳定性。你是不是也想自己来部署DeepSeek呢,其实除了自己部署本地DeepSeek,还可以在云上免费部署满血版DeepSeek,接下来,V 哥来介绍这…

svm(support vector machine)之svr(support vector regression)学习笔记(?)

1.SVR和SVC的区分:SVR:构建函数拟合数据;SVC:二向数据点的划分(分类)注:SVR的是输入时给出的实际值 \(y_{i}\),SVC的 \(y_{i}\)是输入时给出的类别,即+1,-1。 2.SVR的目的:找到一个函数\(f(x)\),使之与训练数据给出的实际目标\(y_{i}\) 的偏差几乎不超过\(ε\),同时…

电脑必学基础操作,任何设备不白买,免费实现远程办公

随着科技的发展、时代的进步,手机、电脑、平板设备还有越来越多的软件应用已成为人们学习、工作、娱乐、社交中必不可少的工具。然而,固然这些智能化的产品益处颇多,若想要更好的掌握它们的妙用,更高效的进行使用,那可以好好了解一下一些基础操作!这不仅能够帮助我们获得…

GitLab中重置ssh密钥

1、通过命令查看当前密钥地址 ls ~/.ssh 2、从新生成新的密钥 ssh-keygen -t rsa -b 4096 -C "your-email@example.com"3、找到public key 名称为 id_rsa.pub 复制其内容,在新建密钥的时候粘贴到key中即可

网络安全红队学习资源

关于网络安全红队方向的学习资源介绍Red Team Notes 红队将模拟恶意攻击者最有可能使用的TTP,并试图获得皇冠上的宝石(通常是一面旗帜)。 https://red.tymyrddin.dev/awesome-pentest 💻🛡️ 一个为渗透测试精心策划的资源、工具和其他有趣的东西的集合。 https://githu…

利用流处理实现实时生成式 AI 应用

在过去的十年里,我们已经显著转向实时、数据中心化的应用程序。无论是在电子商务推荐、欺诈检测还是物联网事件分析中,用户现在都期望通过持续的数据流获得即时且符合上下文的响应。MongoDB 灵活的文档模型和实时能力使其非常适用于这些动态工作负载,尤其是当它与 Kafka 等流…

连续学习论文A Comprehensive Survey of Continual Learning:Theory, Method and Application阅读:

连续学习是指智能系统能够在其生命周期内逐步获取、更新、积累和利用知识的能力。主要挑战是灾难性遗忘,即学习新任务时旧任务性能急剧下降。CL 的目标包括平衡稳定性和可塑性、任务内与任务间的泛化能力以及资源效率。 2.2节对连续学习不同的种类进行了分类 包括不同任…

2025 氧化铝

跌势快要结束了

打靶记录29——dawn

靶机: https://www.vulnhub.com/entry/sunset-dawn,341/ 下载(镜像):https://download.vulnhub.com/sunset/dawn.zip 难度:中目标:获得 Root 权限攻击方法:主机发现 端口扫描 信息收集 SAMBA 漏洞 任意文件上传 日志信息泄露 调度任务 提权方法 1 提权方法 2 潜在提权方…

【APP逆向31】rpc小应用之DYM

1.目标:逆向登录接口中的sign参数2.入口3.hook校验3.1:通过hook与抓包对比,我们可以确定我们的猜测是正确的。Java.perform(function () {var Crypt = Java.use("com.yoloho.libcore.util.Crypt");Crypt.encrypt_data.implementation = function (j2,str,i3) {con…