【问题标题】:Disapear setted background color of GridViewCell on Scroll DataGrid在 Scroll DataGrid 上消失设置 GridView 单元格的背景颜色
【发布时间】:2015-09-14 08:06:52
【问题描述】:

我在网格点击中设置了特定的单元格背景。但是在网格滚动上它设置回默认值。我不喜欢将 EnableRowVirtualization 用作 False。 这是我的代码:

<telerik:RadGridView ItemsSource="{Binding PersonList}" Name="grid"
Height="200" PreviewMouseUp="grid_PreviewMouseUp" >

private void grid_PreviewMouseUp(object sender, MouseButtonEventArgs e)
{
    var cell = (sender as RadGridView).CurrentCell;
    cell.Background = Brushes.Aqua;
}

谢谢

【问题讨论】:

  • 你想达到什么目的?我的意思是,您单击一个单元格,它的背景会发生变化……但是当您单击另一个单元格时会发生什么?第一个单元格是保持颜色还是应该恢复到以前的背景颜色?除了改变它的颜色之外,单击一个单元格是否会做其他事情(例如设置项目的某些属性)?
  • 我的主要问题是,当我滚动网格并回到第一个位置时,彩色单元格设置为默认背景。我想在我的项目的复杂场景中使用此功能。感谢您的评论。

标签: wpf wpfdatagrid radgridview


【解决方案1】:

虚拟化只是从内存中删除滚动后未显示的单元格。因此,您不能只更改视觉元素的属性。并且您需要将所选单元格的信息保存在模型类中。您应该在模型类中使用一些属性(SelectedColumns)来保存当前 选定的列(或列)。您可以在单击中设置此信息 处理程序(或您已经在问题中描述的)。然后你需要 使用转换器创建绑定(例如 - ValueToColorConverter),内部使用 SelectedColumns 属性和当前单元格的信息返回必要的背景颜色。

GridViewCell 的示例:

<Style TargetType="telerik:GridViewCell" BasedOn="{StaticResource GridViewCellStyle}">
    <Setter Property="Background" Value="{Binding Converter={StaticResource ValueToColorConverter}}" />
</Style>

第二种方式——使用CellStyleSelector

【讨论】:

  • 我希望通过用户单击而不是评估单元格的值来为单元格着色。感谢您的评论。
  • 我怎么说:您可以在点击处理程序中设置此信息(或您已经在问题中描述)
  • 如果你想使用虚拟化,你必须在模型或视图模型中保存有关选定单元格的信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-21
相关资源
最近更新 更多