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,这些产品你可以关注>>
本文转载自葡萄城

C1FlexGrid的网络资源(在线帮助和各种例子)

C1FlexGrid不错的网络资源(在线帮助和各种例子)在线帮助地址: http://helpcentral.componentone.com/nethelp/c1flexgrid/default.h...
  • tyouvivi
  • tyouvivi
  • 2007年07月13日 09:14
  • 10304

C1FlexGrid属性操作

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

c1FlexGrid 中文帮助文档

  • 2010年11月09日 18:02
  • 263KB
  • 下载

C1FlexGrid合计行解决方法

在C1FlexGrid使用过程中经常用到合计行,但是C1FlexGrid的属性中却没有最下端行或者最右端列的冻结,利用FlexFreeze类可以解决这个问题,将合计行一直显示在底部。详细请参照代码Fr...
  • tyouvivi
  • tyouvivi
  • 2007年07月03日 08:29
  • 7695

c1FlexGrid控件超链接方法

  • 2015年09月16日 15:37
  • 15KB
  • 下载

C1 WPF C1FlexGrid设置样式技巧:单元格设置背景色

ComponentOne Studio for WPF下载> 对于C1FlexGrid,如何给单元格设置样式(包括前景色,背景色)是提出最多的问题。本文就通过示例介绍如何给C1FlexGrid设置特...
  • AABBbaby
  • AABBbaby
  • 2016年05月30日 09:31
  • 1199

C1.Win.C1FlexGrid.2.

  • 2014年08月22日 17:57
  • 9.15MB
  • 下载

C1FlexGrid教程

  • 2014年01月17日 10:55
  • 5.18MB
  • 下载

【转】C1FlexGrid添加自定义控件问题

转自:http://gcdn.gcpowertools.com.cn/showtopic-14351.html 如题:控件添加上去了,但是滑动滚动条的时候位置会随着改变。...
  • zjwen2007
  • zjwen2007
  • 2014年12月30日 17:28
  • 478

WPF 字体设置

WPF 主界面 更换字体 可全局 但是有的时候有的窗体 字体还是没变 可以做全局样式...
  • q465162770
  • q465162770
  • 2015年11月25日 14:55
  • 1487
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C1 WPF C1FlexGrid设置样式技巧:单元格前景色和字体设置
举报原因:
原因补充:

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