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

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

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.lryc.cn/news/443355.html

相关文章:

  • 如何安装部署kafka
  • Centos7-rpm包管理器方式安装MySQL 5.7.25
  • Project Online 协作版部署方案
  • 小米 13 Ultra机型工程固件 资源预览与刷写说明 步骤解析
  • Goweb预防XSS攻击
  • ICM20948 DMP代码详解(36)
  • 【框架】Spring、SpringBoot和SpringCloud区别
  • 计算机网络各层有哪些协议?
  • Diffusion Model Stable Diffusion(笔记)
  • 如何创建模板提示prompt
  • C语言 | Leetcode C语言题解之第423题从英文中重建数字
  • Jboss CVE-2017-12149 靶场攻略
  • ROS2 中令人困惑的rclpy.shutdown()
  • PHP纯离线搭建(php 8.1.7)
  • 【iOS】push和pop、present和dismiss
  • 基于51单片机的两路电压检测(ADC0808)
  • JavaScript ---案例(统计字符出现次数)
  • 切换淘宝最新npm镜像源
  • mysql时间戳格式化yyyy-mm-dd
  • 网络丢包定位记录(二)
  • 深度学习自编码器 - 自编码器的应用篇
  • Python 小工具制作 系列文章 - 总目录
  • Codeforces Round 973 (Div. 2) - D题
  • threejs性能优化之gltf文件压缩threejs性能优化之glb文件压缩
  • 设计模式 享元模式(Flyweight Pattern)
  • Leetcode 3290. Maximum Multiplication Score
  • CefSharp_Vue交互(Element UI)_WinFormWeb应用(3)---通过页面锁屏和关机(含示例代码)
  • unity UnityWebRequest 的request.downloadHandler 空应用
  • 使用 UWA Gears 定位游戏内存问题
  • OpenRestry(一个Nginx集成工具)的安装与使用