过冬 发表于 2021-6-21 09:37:51

【FlexGrid】MVVM模式中如何显示行号码

求助,不想在xaml.cs中修改,能不能有什么方法在ViewModel中设置行号码,并且使用AllowAddNew="True"的时候,自动追加的新行号是原有的星号呢

过冬 发表于 2021-6-21 09:37:52

Richard.Ma 发表于 2021-6-21 16:03
我想了一下,其实你需要的RowNumber就是相当于一个自增的数据列,

但是一旦这个和ViewModel绑定,那么在 ...
谢谢回复
我的第一个问题,还是需要用CellFactory,我理解了。
那么第二个问题,关于星号我是用以下方法实现的。我想问一下,这个星号必须自己设定吗?我记得不改写行号之前,新行本身就是显示星号的。除了我以下的方法,还有别的方法吗?

      public class MyCellFactory : CellFactory
      {
            public override void CreateRowHeaderContent(C1FlexGrid grid, Border bdr, CellRange rng)
            {

                if (rng.Column == 0)
                {
                  var tb = new TextBlock();
                  
                  if (grid.Rows.Count - 1 > rng.Row)
                  {
                        tb.Text = string.Format("{0}", rng.Row + 1);
                  }
                  else
                  {
                        tb.Text = "*";
                  }
                  
                  tb.HorizontalAlignment = HorizontalAlignment.Center;
                  tb.VerticalAlignment = VerticalAlignment.Center;
                  bdr.Child = tb;
                }
            }
      }

Richard.Ma 发表于 2021-6-21 10:38:43

我看你标题写的就只是要显示行序号,内容中说的“自动追加的新行号是原有的星号”是什么意思呢?

过冬 发表于 2021-6-21 10:49:55

谢谢回复!是这样的,我是再用MVVM模式写一个wpf的表。

其中有2个要求。

1.这个表需要显示行号,但是行号的实现不想在xaml.cs里用【CellFactory】来实现,有没有在ViewModels里动态绑定的方法呢?

2.这个表还要始终显示一个新的行,用到了AllowAddNew="True",这样行列号就会显示星号。但是担心要求1的显示的行号会与2的星号起冲突,有没有解决的方法呢?

Richard.Ma 发表于 2021-6-21 12:30:33

收到,下午帮你验证然后给你回复

过冬 发表于 2021-6-21 13:20:54

Richard.Ma 发表于 2021-6-21 12:30
收到,下午帮你验证然后给你回复

谢谢,麻烦你了

Richard.Ma 发表于 2021-6-21 16:03:38

我想了一下,其实你需要的RowNumber就是相当于一个自增的数据列,

但是一旦这个和ViewModel绑定,那么在对表格进行排序或者筛选等操作后,实际上就无法起到行号的作用了,所以还是只能通过CellFactory来实现

Richard.Ma 发表于 2021-6-21 17:37:16

目前自定义内容就是通过CellFactory,没有其他更好的办法了
页: [1]
查看完整版本: 【FlexGrid】MVVM模式中如何显示行号码