彩票走势图

C1 WPF C1FlexGrid设置样式技巧:设置选择单元格颜色和字体

转帖|使用教程|编辑:龚雪|2016-06-02 09:25:24.000|阅读 1103 次

概述:除了使用ApplyCellStyles方法,通过CreateCellContent方法,我们也可以实现单元格设置颜色和样式的效果。 本文就在此基础上讨论如何可以设置选择单元格的样式。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

<ComponentOne Studio for WPF下载>

有了前两篇的基础:单元格设置背景色单元格前景色和字体设置,我们想要设置选择单元格的背景色,前景色和字体样式都会非常容易。

除了使用ApplyCellStyles方法,通过CreateCellContent方法,我们也可以实现单元格设置颜色和样式的效果。 本文就在此基础上讨论如何可以设置选择单元格的样式。

CreateCellContent方法设置单元格样式代码参考:

public override void CreateCellContent(C1FlexGrid grid, Border bdr, CellRange rng)
{
base.CreateCellContent(grid, bdr, rng);
var tb = bdr.Child as TextBlock;

if (tb != null && rng.Column == 2)
{
ContentPresenter cp = (VisualTreeHelper.GetParent(tb) as ContentPresenter);
System.Windows.Media.RotateTransform rotateTransform = new RotateTransform();
rotateTransform.Angle = 50;
tb.LayoutTransform = rotateTransform;
}
}

效果:

了解了这些知识,我们就可以运用这些知识设置选择的样式。选择的前景色,背景色可以通过SelectionBackground和SelectionForeground直接设置。其他字体样式依然可以通过继承MyCellFactory的方法实现(CreateCellContent或是ApplyCellStyle)实现。

在方法里添加选择的判断,当选择的时候改变选择的样式,代码参考:

public override void CreateCellContent(C1FlexGrid grid, Border bdr, CellRange rng)
{
base.CreateCellContent(grid, bdr, rng);
var columnindex = rng.Column;
var rowindex = rng.Row;
var tb = bdr.Child as TextBlock;
bool selected = (columnindex == grid.Selection.Column && rowindex == grid.Selection.Row);
if (tb != null && selected)
{
ContentPresenter cp = (VisualTreeHelper.GetParent(tb) as ContentPresenter);
System.Windows.Media.RotateTransform rotateTransform = new RotateTransform();
rotateTransform.Angle = 50;
tb.LayoutTransform = rotateTransform;
tb.FontWeight = FontWeights.Bold;
tb.FontSize = 14;
}
}

注意在SelectionChanged事件调用下刷新:

void flex_SelectionChanged(object sender, CellRangeEventArgs e)
{
flex.Invalidate();
}

效果如图:

本文的示例请下载:

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

标签:WPF用户界面控件ComponentOne

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:慧都控件网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP