找回密码
 立即注册

QQ登录

只需一步,快速开始

CanYou8

银牌会员

67

主题

191

帖子

2047

积分

银牌会员

积分
2047

活字格认证微信认证勋章元老葡萄

CanYou8
银牌会员   /  发表于:2016-5-9 22:18  /   查看:8124  /  回复:11
如何实现WPF C1Flexgrid行选中以后改变此行文字的颜色,加粗文字显示?

11 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2016-5-10 10:15:58
沙发
和之前提到的问题一样,都是通过重写CellFactory去设置Foreground等样式信息。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
CanYou8
银牌会员   /  发表于:2016-5-10 13:36:15
板凳
重写CellFactory去设置Foreground等样式,是重写CreateCellContent方法吗?这样实现不了在选中当前行的时候,此行文本变色加粗的效果吧?
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-5-10 14:32:47
地板
CanYou8 发表于 2016-5-10 13:36
重写CellFactory去设置Foreground等样式,是重写CreateCellContent方法吗?这样实现不了在选中当前行的时候 ...

通过重写ApplyCellStyles方法实现。
判断是选择的行,然后通过bdr.Child as TextBlock可以设置TextBlock的前景色(比如FontWeight, FontSize等)
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
CanYou8
银牌会员   /  发表于:2016-5-10 15:29:00
5#
能否给点代码提示?
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-5-10 17:07:41
6#
CanYou8 发表于 2016-5-10 15:29
能否给点代码提示?

代码片段参考(判断可以根据需求自己写):
  1. public override void ApplyCellStyles(C1FlexGrid grid, CellType cellType, CellRange range, Border bdr)
  2.         {
  3.             var columnindex = range.Column;
  4.             var rowindex = range.Row;
  5.             var _textblock = bdr.Child as TextBlock;

  6.             if ((columnindex == 2) && (rowindex == 3))
  7.             {
  8.                 bdr.Background = new SolidColorBrush(Colors.Red);
  9.                 bdr.BorderBrush = Brushes.Blue;
  10.                 bdr.BorderThickness = new Thickness(1);
  11.                 _textblock.TextDecorations = TextDecorations.Underline;
  12.                 _textblock.FontWeight = FontWeights.Bold;
  13.                 _textblock.FontSize = 15;
  14.                 _textblock.FontStyle = FontStyles.Italic;
  15.             }
  16.         }
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
CanYou8
银牌会员   /  发表于:2016-5-11 10:49:15
7#
重写ApplyCellStyles后,还是有点问题,请看代码:
  1.         public override void ApplyCellStyles(C1FlexGrid grid, CellType cellType, CellRange range, Border bdr)
  2.         {
  3.             var rowindex = range.Row;
  4.             var _textblock = bdr.Child as TextBlock;

  5.             if (null != _textblock && grid.SelectedIndex == rowindex)
  6.             {
  7.                 _textblock.Foreground = new SolidColorBrush(Colors.Red);
  8.                 _textblock.FontWeight = FontWeights.Bold;
  9.             }
  10.         }
复制代码
1.表头样式不希望也被重写,如何处理?
2.运行时,第1行数据默认被加粗了,如何处理?
3.选中一行后,此行数据变色了,但是没有被加粗显示,如何处理?
4.希望选中当前行后,只是字体颜色变红,字体加粗,而背景色不变。此处背景色变为蓝色了,如何处理?


Demo:





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-5-11 12:02:19
8#
CanYou8 发表于 2016-5-11 10:49
重写ApplyCellStyles后,还是有点问题,请看代码:
1.表头样式不希望也被重写,如何处理?
2.运行时,第1 ...

1,2,3->业务逻辑部分可以通过判断去解决。
比如ApplyCellStyles提供了CellType,你可以判断单元格类型是否是Cell.
4.有提供SelectionBackground属性可以用来设置选择的背景色。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
CanYou8
银牌会员   /  发表于:2016-5-16 13:52:05
9#
选中行以后,此行数据的背景色变了。同样的方式设置和修改,为何加粗的效果没有呢?
  1.         public override void ApplyCellStyles(C1FlexGrid grid, CellType cellType, CellRange range, Border bdr)
  2.         {
  3.             if (cellType != CellType.Cell) return;

  4.             if (grid.Selection.Row == range.Row)
  5.             {
  6.                 var _textblock = bdr.Child as TextBlock;
  7.                 if (null == _textblock) return;

  8.                 _textblock.FontWeight = FontWeights.Bold; //加粗
  9.                 _textblock.Foreground = new SolidColorBrush(Colors.Red); //变色
  10.             }
  11.             base.ApplyCellStyles(grid, cellType, range, bdr);
  12.         }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-5-16 18:31:29
10#
CanYou8 发表于 2016-5-16 13:52
选中行以后,此行数据的背景色变了。同样的方式设置和修改,为何加粗的效果没有呢?

谢谢您的反馈。
修改后的Demo:
按照您的Demo,改写如下:

  1.         public override void ApplyCellStyles(C1FlexGrid grid, CellType cellType, CellRange range, Border bdr)
  2.         {
  3.             if (cellType == CellType.Cell && (grid.Rows[range.Row] as Row) != null)
  4.             {
  5.                 Row rowExt = grid.Rows[range.Row] as Row;
  6.                 if (grid.Selection.Row == range.Row)
  7.                     rowExt.FontWeight = FontWeights.Bold;

  8.                 else
  9.                     rowExt.FontWeight = FontWeights.Normal;

  10.             }        

  11.             //base.ApplyCellStyles(grid, cellType, range, bdr);
  12.         }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部