C1 WPF C1FlexGrid设置样式技巧:单元格前景色和字体设置

转载 2016年06月02日 10:10:35

<ComponentOne Studio for WPF下载>

在之前我们讨论过给单元格设置背景色:通过重写ApplyCellStyles方法,然后设置Border的Background属性实现。本文就在此基础上讨论如何对单元格字体进行设置。

还是通过ApplyCellStyles方法,我们可以拿到Border,然后从Border.Child拿到TextBlock,就可以通过TextBlock的Font相关属性(Foreground,FontWeight, TextDecorations等)设置字体。

前景色

因此设置单元格的前景色和背景色的代码参考如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public override void ApplyCellStyles(C1FlexGrid grid, CellType cellType, CellRange range, Border bdr)
{
var columnindex = range.Column;
var rowindex = range.Row;
var _textblock = bdr.Child as TextBlock;
if (_textblock == nullreturn;
//check if the cell is selected or not
bool selected=(columnindex == grid.Selection.Column && rowindex == grid.Selection.Row);
if ((columnindex == 2) && (rowindex == 3)&&!selected)
{
//set the customizations on the cell when it is not selected
bdr.Background = new SolidColorBrush(Colors.Red);
_textblock.Foreground= Brushes.Yellow;
}
 
}

代码效果如下:

字体样式设置

再此基础上,我们来讨论字体的设置,只需设置属性即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public override void ApplyCellStyles(C1FlexGrid grid, CellType cellType, CellRange range, Border bdr)
{
var columnindex = range.Column;
var rowindex = range.Row;
var _textblock = bdr.Child as TextBlock;
if (_textblock == nullreturn;
//check if the cell is selected or not
bool selected=(columnindex == grid.Selection.Column && rowindex == grid.Selection.Row);
if ((columnindex == 2) && (rowindex == 3)&&!selected)
{
//set the customizations on the cell when it is not selected
bdr.Background = new SolidColorBrush(Colors.Red);
_textblock.Foreground= Brushes.Yellow;
_textblock.FontSize = 14d;
_textblock.FontWeight = FontWeights.Bold;
_textblock.FontStyle = FontStyles.Italic;
 
}
 
}

这个时候,该单元格的背景色,前景色和字体样式都发生了改变。非选择的时候:

选择的时候:

改进代码:改变选择单元格的样式

如果这个时候希望这个特定的单元格,在选择的时候字体样式发生改变(恢复成未设置的状态),这个时候我们就需要添加代码,在选择的时候设置_textblock的Font相关属性重置。代码参考:

1
2
3
4
5
6
if (selected)
{
_textblock.FontSize = 12d;
_textblock.FontWeight = FontWeights.Normal;
_textblock.FontStyle = FontStyles.Normal;
}

注意:需要在方法的最后进行Invalidate操作。

代码如下:

1
grid.Invalidate(new CellRange(3, 2));

这个时候选择单元格的结果如图:

本文的示例请下载:Wpf_Flex_CellstyleOnCell_update.zip

PS: 关于ComponentOne,这些产品你可以关注>>
本文转载自葡萄城

WPF学习笔记:(一)数据绑定与DataContext

前一段半心半意地学习了一下WPF,是从控件入手的,发现巨容易,甚至有些无趣。昨天面试,被问到了很多WPF的特性的东西,直接就傻了。于是乎,还是要去深刻的学习一下WPF。刚刚试了一下数据绑定,几次都没有...
  • bfboys
  • bfboys
  • 2016年09月27日 16:04
  • 321

C1FlexGrid属性操作

1.  列自由拖拽 我们可以拖动教育的列放到最后一行,如图 C1控件默认支持   2.  前几列锁定   Frozen 的数值 设为2,则前两列锁定,拉动横向滚动条...

C1.FlexGrid合并单元格

在WinForm的开发中,经常会用到FlexGrid控件,用于显示数据和编辑数据,合并单元格也是经常用到的。 1.单元格自动合并 C1FlexGrid 一帮情况下对于各单元格可以在行方向和列...

C1.FlexGrid合并单元格

  在WinForm的开发中,经常会用到FlexGrid控件,用于显示数据和编辑数据,合并单元格也是经常用到的。 1.单元格自动合并 C1FlexGrid 一帮情况下对于各单...

WPF C1FlexGrid 扩展、带表头ID,并且有鼠标移到行高亮

C1.WPF.FlexGrid 列表控件的一个扩展,主要实现自带表头,高亮鼠标所在行,高亮颜色就是选中颜色。...

android studio设置主题、护眼色、字体、Logcat前景色背景色

1、设置主题 按快捷键Ctrl+Alt+s,打开settings窗口。再选择Apprearance,选择自己喜欢的主题,默认两款,一个白,一个黑。我选择的是白色默认。如图: 2、设置护眼色  护眼...

wpf后台设置颜色(背景色,前景色)

有时候你是不是也会遇到要在wpf后台给某个控件设置背景色或者给文字设置前景色的情况? 本人最近看到一个从自定义的combobox读取系统字体和颜色的实例,该实例实现了随字体combobox选项改变而...

POI中设置Excel单元格格式样式(居中,字体,边框等)

创建sheet什么的就不多说了,直接进入正题      HSSFCellStyle cellStyle = wb.createCellStyle();     一、设置背景色:      cellSt...

POI Excel 06 合并单元格,设置字体样式

@author YHC 合并单元格 //创建Excel Workbook wb = new HSSFWorkbook(); //创建工作薄 She...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C1 WPF C1FlexGrid设置样式技巧:单元格前景色和字体设置
举报原因:
原因补充:

(最多只允许输入30个字)