找回密码
 立即注册

QQ登录

只需一步,快速开始

FBAccount

中级会员

21

主题

73

帖子

701

积分

中级会员

积分
701

活字格认证

FBAccount
中级会员   /  发表于:2014-12-3 10:48  /   查看:7931  /  回复:5

如图,我希望红框(指定Column)下所有的Cell 都是指定颜色~ 如白色
而不是奇偶数行不同颜色~ (非指定的Column仍走默认设定)

感谢

本帖子中包含更多资源

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

x

5 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2014-12-3 13:55:00
沙发
回复 1楼FBAccount的帖子

你可以在XMAL中更改该列的Background,比如将某列的背景色设置为蓝色。
  1. <c1:C1FlexGrid Name="c1FlexGrid1" AutoGenerateColumns="False" Grid.Row="1">
  2.             <c1:C1FlexGrid.Columns>
  3.                 <c1:Column Binding="{Binding ID}" Background="AliceBlue" Header="ID" Width="50"/>
  4.             </c1:C1FlexGrid.Columns>
  5.         </c1:C1FlexGrid>
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
FBAccount
中级会员   /  发表于:2014-12-3 14:49:00
板凳
回复 1楼FBAccount的帖子

你可以在XMAL中更改该列的Background,比如将某列的背景色设置为蓝色。
[code] &lt;c1:C1
Alice 发表于 2014-12-3 13:55:00


请问一下,那此Column 线的部分要怎么做呢? 例如图中横线不要的话


感谢妳

本帖子中包含更多资源

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

x
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-12-3 15:17:00
地板
回复 3楼FBAccount的帖子

你说的是设置的C1FlexGrid的GridLine么?
GridLinesVisibility属性可以控件GridLine的显示。设置为None就横线和竖线都不会显示,设置为Vertical,就不会显示横着的线。你可以根据需求尝试下。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
FBAccount
中级会员   /  发表于:2014-12-3 15:39:00
5#
回复 3楼FBAccount的帖子

你说的是设置的C1FlexGrid的GridLine么?
GridLinesVisibility属性可以控件Gri
Alice 发表于 2014-12-3 15:17:00


这个我知道,但我需求是指定Column不要线,不指定的还是得照GridLine的设定呈现线
目前是所有Column都要横线与纵线,但最后一个Column不要线,不好意思麻烦了
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-12-3 19:00:00
6#
回复 5楼FBAccount的帖子

根据你的需求来看,有两种解决的思路,但都是利用CellFactory类。
第一种就是将C1FlexGrid的GridLine设置为None。然后重写CellFactory的CreateCellBorder方法,为除了特殊列的单元格画上Border。
另一种就是重写CellFactory的CreateCellBorder方法,将你所需要的列的单元格的border换成空。

步骤及代码参考:
Step 1: Define and Assign CellFactory
  1. public class MyCellFactory : C1.WPF.FlexGrid.CellFactory
  2. {
  3.    List<C1.WPF.FlexGrid.CellRange> crw = new List<C1.WPF.FlexGrid.CellRange>();
  4.    public MyCellFactory()
  5.    {
  6.        crw.Add(new C1.WPF.FlexGrid.CellRange(0,0));
  7.        crw.Add(new C1.WPF.FlexGrid.CellRange(1,1));
  8.        crw.Add(new C1.WPF.FlexGrid.CellRange(2,2));
  9.        crw.Add(new C1.WPF.FlexGrid.CellRange(3,3));        
  10.    }
  11.    public override Border CreateCellBorder(C1.WPF.FlexGrid.C1FlexGrid grid, C1.WPF.FlexGrid.CellType cellType, C1.WPF.FlexGrid.CellRange rng)
  12.    {
  13.        Border bdr = base.CreateCellBorder(grid, cellType, rng);

  14.        if (cellType == C1.WPF.FlexGrid.CellType.Cell)
  15.          if (crw.Contains(rng))
  16.          {

  17.            VisualBrush vb = new VisualBrush();
  18.            vb.Visual = new Rectangle() { Height = 10, Width = 40, Stroke = new SolidColorBrush(Colors.Red), StrokeDashArray = new DoubleCollection() { 1.0 } };
  19.             bdr.BorderBrush = vb;               
  20.          }

  21.          return bdr;
  22.     }
  23. }
复制代码


Step2: Assign CellFactory

  1. c1Flexgrid1.CellFactory = new MyCellFactory();
复制代码


希望这对解决问题有帮助,如果依然有问题,请联系我让我知道。

评分

参与人数 1满意度 +5 收起 理由
FBAccount + 5 感谢,之后我会来试试这段代码,非常感谢响应

查看全部评分

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

葡萄城控件服务团队

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