CanYou1 发表于 2015-11-30 15:49:00

C1DataGrid只读列样式设置

C1DataGrid中有一些列是只读的,有一些是可编辑的,但用户无法用肉眼识别哪些列可编辑,怎样设置才能从样式上做以区别

Alice 发表于 2015-11-30 17:03:00

回复 1楼CanYou1的帖子

谢谢您的反馈。
您是设置列的ReadOnly属性(比如DataGridTextColumn)为true么?
如果是这样,您可以通过LoadedCellPresenter事件来判断列的只读,并且设置背景色。
比如代码参考:
void grid_LoadedCellPresenter(object sender, DataGridCellEventArgs e)
      {
            if (e.Cell.Column.IsReadOnly)
            {
                e.Cell.Presenter.Background = Brushes.Red;
            }
      }

CanYou1 发表于 2015-12-1 09:40:00

回复 2楼Alice的帖子

好的,谢谢

Alice 发表于 2015-12-1 10:47:00

回复 3楼CanYou1的帖子

不客气。
谢谢反馈。

CanYou1 发表于 2015-12-22 14:12:00

回复 2楼Alice的帖子

发现这样做存在一个问题,如果列表有横向滚动条,左右滚几下,会导致有的非只读列也变色了

Alice 发表于 2015-12-22 15:49:00

回复 5楼CanYou1的帖子

使用随机安装示例做测试(将某列设置为只读,滚动),无法重现您提到的问题,有什么必然重现的步骤?
测试Demo:
\Documents\ComponentOne Samples\WPF\C1.WPF.DataGrid\CS\DataGridSamples\DataGrid

CanYou1 发表于 2015-12-22 17:20:00

回复 6楼Alice的帖子






Alice 发表于 2015-12-23 09:56:00

回复 7楼CanYou1的帖子

谢谢您提供的Demo。
您的问题我们收到了,测试后给您反馈。

Alice 发表于 2015-12-24 17:28:00

回复 7楼CanYou1的帖子

应该是刷新导致的。
使用模板来设置背景色,代码参考:
         <c1:DataGridTemplateColumn Header="column1" Width="400" IsReadOnly="True">
                  <c1:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding column1}" Background="Pink"></TextBlock>
                        </DataTemplate>
                  </c1:DataGridTemplateColumn.CellTemplate>
                </c1:DataGridTemplateColumn>

CanYou1 发表于 2015-12-26 11:54:00

回复 9楼Alice的帖子

不能直接设置吗,这样的话每个只读列都要换成模板
页: [1] 2
查看完整版本: C1DataGrid只读列样式设置