2010-04-19 88 views
1

我有一個RadGridView,其中一列僅包含按鈕。在Telerik RadGridView for Silverlight中維護單元格狀態

根據鏈接到網格中特定記錄的布爾變量的值,我啓用或禁用包含該按鈕的單元格。這是我如何做到這一點:

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將是最好的調用我的功能,設置按鈕單元格的狀態,每當顯示的值改變?

回答

0

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

+0

謝謝弗拉德。事實上,當我垂直滾動時,使用RowLoaded事件會完成這項工作。但是,我無法找到水平滾動的「ColumnLoaded」等效事件。有任何想法嗎? – jbethier 2010-04-20 16:15:07

+0

這個想法是使用IValueConverter而不是我之前回復中的博客文章中顯示的。這將在列和行虛擬化方面按預期工作。此外,最近我們爲網格引入了樣式和模板選擇器,您也可以使用它們來實現您的目標。您可以查看我的博客帖子以獲取更多信息:http://blogs.telerik.com/vladimirenchev/posts/10-04-01/conditional_styles_and_templates_with_radgridview_for_silverlight_and_wpf.aspx – 2010-04-21 07:53:47

相關問題