C# 在Silverlight的Telerik RadGridView中维护单元状态
我有一个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
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,正如我之前回复的博文所示。这将在列和行虚拟化中正常工作。此外,最近我们为网格引入了样式和模板选择器,您也可以使用它们来实现您的目标。有关更多信息,请查看我的博客帖子: