WPF C1Flexgrid行选中以后改变此行文字的颜色,加粗文字显示
如何实现WPF C1Flexgrid行选中以后改变此行文字的颜色,加粗文字显示?和之前提到的问题一样,都是通过重写CellFactory去设置Foreground等样式信息。 重写CellFactory去设置Foreground等样式,是重写CreateCellContent方法吗?这样实现不了在选中当前行的时候,此行文本变色加粗的效果吧? CanYou8 发表于 2016-5-10 13:36
重写CellFactory去设置Foreground等样式,是重写CreateCellContent方法吗?这样实现不了在选中当前行的时候 ...
通过重写ApplyCellStyles方法实现。
判断是选择的行,然后通过bdr.Child as TextBlock可以设置TextBlock的前景色(比如FontWeight, FontSize等) 能否给点代码提示? CanYou8 发表于 2016-5-10 15:29
能否给点代码提示?
代码片段参考(判断可以根据需求自己写):
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 ((columnindex == 2) && (rowindex == 3))
{
bdr.Background = new SolidColorBrush(Colors.Red);
bdr.BorderBrush = Brushes.Blue;
bdr.BorderThickness = new Thickness(1);
_textblock.TextDecorations = TextDecorations.Underline;
_textblock.FontWeight = FontWeights.Bold;
_textblock.FontSize = 15;
_textblock.FontStyle = FontStyles.Italic;
}
}
重写ApplyCellStyles后,还是有点问题,请看代码:
public override void ApplyCellStyles(C1FlexGrid grid, CellType cellType, CellRange range, Border bdr)
{
var rowindex = range.Row;
var _textblock = bdr.Child as TextBlock;
if (null != _textblock && grid.SelectedIndex == rowindex)
{
_textblock.Foreground = new SolidColorBrush(Colors.Red);
_textblock.FontWeight = FontWeights.Bold;
}
}1.表头样式不希望也被重写,如何处理?
2.运行时,第1行数据默认被加粗了,如何处理?
3.选中一行后,此行数据变色了,但是没有被加粗显示,如何处理?
4.希望选中当前行后,只是字体颜色变红,字体加粗,而背景色不变。此处背景色变为蓝色了,如何处理?
Demo:
CanYou8 发表于 2016-5-11 10:49
重写ApplyCellStyles后,还是有点问题,请看代码:
1.表头样式不希望也被重写,如何处理?
2.运行时,第1 ...
1,2,3->业务逻辑部分可以通过判断去解决。
比如ApplyCellStyles提供了CellType,你可以判断单元格类型是否是Cell.
4.有提供SelectionBackground属性可以用来设置选择的背景色。 选中行以后,此行数据的背景色变了。同样的方式设置和修改,为何加粗的效果没有呢?
public override void ApplyCellStyles(C1FlexGrid grid, CellType cellType, CellRange range, Border bdr)
{
if (cellType != CellType.Cell) return;
if (grid.Selection.Row == range.Row)
{
var _textblock = bdr.Child as TextBlock;
if (null == _textblock) return;
_textblock.FontWeight = FontWeights.Bold; //加粗
_textblock.Foreground = new SolidColorBrush(Colors.Red); //变色
}
base.ApplyCellStyles(grid, cellType, range, bdr);
}
CanYou8 发表于 2016-5-16 13:52
选中行以后,此行数据的背景色变了。同样的方式设置和修改,为何加粗的效果没有呢?
谢谢您的反馈。
修改后的Demo:
按照您的Demo,改写如下:
public override void ApplyCellStyles(C1FlexGrid grid, CellType cellType, CellRange range, Border bdr)
{
if (cellType == CellType.Cell && (grid.Rows as Row) != null)
{
Row rowExt = grid.Rows as Row;
if (grid.Selection.Row == range.Row)
rowExt.FontWeight = FontWeights.Bold;
else
rowExt.FontWeight = FontWeights.Normal;
}
//base.ApplyCellStyles(grid, cellType, range, bdr);
}
页:
[1]
2