C# 在Silverlight的Telerik RadGridView中维护单元状态

C# 在Silverlight的Telerik RadGridView中维护单元状态,c#,silverlight,telerik,C#,Silverlight,Telerik,我有一个RadGridView,其中一列只包含按钮 根据与网格中特定记录链接的布尔变量的值,我启用或禁用包含按钮的单元格。我就是这样做到的: foreach (Item item in this.radGridView.Items) { row = this.radGridView.ItemContainerGenerator.ContainerFromItem(item) as GridViewRow; if (row != null) { cell

我有一个RadGridView,其中一列只包含按钮

根据与网格中特定记录链接的布尔变量的值,我启用或禁用包含按钮的单元格。我就是这样做到的:

foreach (Item item in this.radGridView.Items)
{
    row = this.radGridView.ItemContainerGenerator.ContainerFromItem(item) as GridViewRow;

    if (row != null)
    {
        cell = (from c in row.Cells
                where c.Column.UniqueName == "buttonCol"
                select c).FirstOrDefault();
        if (cell != null)
        {
            if (item.buttonEnabled)
            {
                cell.IsEnabled = true;
            }
            else
            {
                cell.IsEnabled = false;
            }
        }
    }
}
问题在于,由于我的网格具有水平和垂直滚动条,而且我使用的是行和列虚拟化,因此包含未显示按钮的单元格的状态将丢失。在我的情况下,禁用虚拟化不是一个解决方案,因为我的网格中有很多数据


我想知道RadGridView的哪个事件最适合调用我的函数,该函数在显示值发生变化时设置按钮单元格的状态?

您可以使用中演示的方法。

谢谢Vlad。事实上,当我垂直滚动时,使用RowLoaded事件可以完成这项工作。但是,对于水平滚动,我找不到类似“ColumnLoaded”的等效事件。有什么想法吗?我的想法是使用IValueConverter,正如我之前回复的博文所示。这将在列和行虚拟化中正常工作。此外,最近我们为网格引入了样式和模板选择器,您也可以使用它们来实现您的目标。有关更多信息,请查看我的博客帖子: