WPF DataGrid 动态修改某一个单元格的样式

devtools/2024/9/25 17:19:38/

WPF DataGrid 动态修改某一个单元格的样式

 <DataGrid Name="main_datagrid_display" Width="1267" Height="193" Grid.Column="1"ItemsSource="{Binding DataGridModels}"><DataGrid.Columns><!--ElementStyle 设置元素样式--><DataGridTextColumn Header="状态" Width="*" IsReadOnly="True" Binding="{Binding ZhuangTai}" ElementStyle="{StaticResource textblock_textalignment_center}"></DataGridTextColumn></DataGrid.Columns>
</DataGrid>

  对于 DataGrid 某一行,如果我们想要动态的对指定单元格的样式进行修改,按照上述代码,是很难去实现的,但是有时候需求就需要我们动态的修改指定的单元格,例如我这里动态对指定单元格修改前景色,所对应的绑定数据定义如下:

public class DataGridModel : INotifyPropertyChanged
{private System.Windows.Media.Brush _foreColor;public System.Windows.Media.Brush ForeColor{get { return _foreColor; }set{if (_foreColor != value){_foreColor = value;if (null != PropertyChanged){PropertyChanged(this, new PropertyChangedEventArgs("ForeColor"));}}}}public event PropertyChangedEventHandler? PropertyChanged;public DataGridModel(System.Windows.Media.Brush color){ForeColor = color;}
}

方法一:使用 DataGridTemplateColumn

<DataGrid Name="main_datagrid_display" Width="1267" Height="193" Grid.Column="1"ItemsSource="{Binding DataGridModels}"><DataGrid.Columns><!--DataGridTemplateColumn 实现--><DataGridTemplateColumn Header="状态" Width="*" IsReadOnly="True"><DataGridTemplateColumn.CellTemplate><DataTemplate><Border><TextBox Text="{Binding ZhuangTai}" Foreground="{Binding ForeColor}" VerticalContentAlignment="Center" HorizontalContentAlignment="Center"></TextBox></Border></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn><!--DataGridTemplateColumn 实现--></DataGrid.Columns>
</DataGrid>

  这里我在 xaml 中为 Foreground 绑定 ForeColor 属性,在后台就可以动态修改其前景色,下同。

方法二:修改 DataGridTextColumn .ElementStyle

<DataGrid Name="main_datagrid_display" Width="1267" Height="193" Grid.Column="1"ItemsSource="{Binding DataGridModels}"><DataGrid.Columns><!--DataGridTextColumn .ElementStyle 实现--><DataGridTextColumn Header="状态" Width="*" IsReadOnly="True" Binding="{Binding ZhuangTai}"><DataGridTextColumn.ElementStyle><Style TargetType="TextBlock"><Setter Property="Foreground" Value="{Binding ForeColor}"></Setter></Style></DataGridTextColumn.ElementStyle></DataGridTextColumn><!--DataGridTextColumn .ElementStyle 实现--></DataGrid.Columns>
</DataGrid>

  以上两种方式得到的结果一样,可以根据实际情况再稍微调整下格式:
在这里插入图片描述
结语:如果修改变动不至于修改一整个单元格的话,推荐使用方法二。


http://www.ppmy.cn/devtools/117077.html

相关文章

微前端框架之乾坤【qiankun】(一)

先上背景&#xff0c;新入职一家公司&#xff0c;公司使用到了这个框架&#xff0c;学习一番&#xff0c;要求很低&#xff0c;让自己能够在这个业务线正常的开发。 学习第一步&#xff0c;看官网。给您贴一下官网地址&#xff0c;开心贴贴。 什么是微前端&#xff1a;抄一下&a…

无人机蜂群作战会成为未来战争的主要形式吗,该如何反制呢?

无人机蜂群作战在未来战争中确实有可能成为一种重要的作战形式&#xff0c;但是否会成为“主要形式”则取决于多种因素&#xff0c;包括技术发展、战术创新、战略需求以及国际政治和军事格局的变化等。以下是对无人机蜂群作战及其反制措施的详细分析&#xff1a; 一、无人机蜂…

红狮金业:地缘紧张局势下,黄金价格屡创新高

今日&#xff08;9 月 25 日&#xff09;现货黄金日内维持震荡走势。红狮黄金行情软件显示&#xff0c;今日开盘报 2655.45 美元/盎司&#xff0c;最高触及 2670.09 美元/盎司&#xff0c;最低触及 2654.85 美元/盎司。截至 9 月 25 日北京时间 13:17&#xff0c;今日黄金现货价…

【自动驾驶】ros如何隔绝局域网内其他电脑播包

1.问题 可能碰到自己播包的时候&#xff0c;别人播包的传到我们电脑上&#xff0c;导致无法分析问题&#xff0c;或者出现一些奇怪的现象。 2.解决 export ROS_LOCALHOST_ONLY1 在终端加上这句话&#xff0c;或者在~/.bashrc中添加&#xff0c;通过source ~/.bashrc使其生…

网络安全入门教程(非常详细)从零基础入门到精通_网路安全 教程

前言 1.入行网络安全这是一条坚持的道路&#xff0c;三分钟的热情可以放弃往下看了。2.多练多想&#xff0c;不要离开了教程什么都不会了&#xff0c;最好看完教程自己独立完成技术方面的开发。3.有时多百度&#xff0c;我们往往都遇不到好心的大神&#xff0c;谁会无聊天天给…

解决R包依赖版本不兼容问题

ERROR: dependency ‘Matrix’ is not available for package ‘irlba’ removing ‘/root/anaconda3/envs/myview/lib/R/library/irlba’ ERROR: dependency ‘Matrix’ is not available for package ‘N2R’ removing ‘/root/anaconda3/envs/myview/lib/R/library/N2R’ ER…

rocketmq一个简单的发送消息接收消息

需要的依赖 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId><version>4.8.0</version></dependency> 发送消息 package com.zxy.bank2.test;import org.apache.rocketmq.cli…

Redis:主从复制

目录 主从复制概述 主从复制原理 # 全量复制 # 增量复制 更深入理解 #当主服务器不进行持久化时复制的安全性 # 为什么主从全量复制使用RDB而不使用AOF&#xff1f; 为什么还有无磁盘复制模式&#xff1f; # 为什么还会有从库的从库的设计&#xff1f; # 读写分离及其…