2011-03-16 22 views
1

我在我的xaml代碼中提到GridViewColumn作爲RuntimeColumn,但我無法將其禁用或將其設置爲以只讀方式編程。我將需要在沒有數據綁定的情況下在運行時執行此操作。如何使一個GridViewColumn只讀/禁用?

我想:

this.RuntimeColumn.IsEnabled = false; 
this.RuntimeColumn.ReadOnly = false; 

任何想法?

+0

你沒有一個細胞的模板? – 2011-03-16 00:52:29

+0

你能提供更多信息嗎? – 2011-03-16 03:43:53

+0

對不起,大家剛剛看到它。是的,我有一個CellTemplate,爲每一行添加複選框。但我想要一個GridViewColumns根據屬性啓用/禁用。我怎樣才能做到這一點? – 2011-03-16 17:18:26

回答

2

您必須設置與Loaded事件的EventSetter,並在後面的代碼把下面

private void GridViewColumnHeader_Loaded(object sender, RoutedEventArgs e) 
    {    
     GridViewColumnHeader columnHeader = sender as GridViewColumnHeader; 
     Border HeaderBorder = columnHeader.Template.FindName("HeaderBorder", columnHeader) as Border; 
     if (HeaderBorder != null) 
     { 
      HeaderBorder.Background = HeaderBorder.Background; 
     } 
     Border HeaderHoverBorder = columnHeader.Template.FindName("HeaderHoverBorder", columnHeader) as Border; 
     if (HeaderHoverBorder != null) 
     { 
      HeaderHoverBorder.BorderBrush = HeaderHoverBorder.BorderBrush; 
     } 
     Rectangle UpperHighlight = columnHeader.Template.FindName("UpperHighlight", columnHeader) as Rectangle; 
     if (UpperHighlight != null) 
     { 
      UpperHighlight.Visibility = UpperHighlight.Visibility; 
     } 
     Thumb PART_HeaderGripper = columnHeader.Template.FindName("PART_HeaderGripper", columnHeader) as Thumb;    
     if (PART_HeaderGripper != null) 
     { 
      PART_HeaderGripper.Background = PART_HeaderGripper.Background; 
      PART_HeaderGripper.Cursor = System.Windows.Input.Cursors.Arrow; // override the size curser 
     } 
    } 
+0

謝謝,這段代碼對我來說是非常新的。哪一個按名稱檢索特定的GridColumnView,稱爲「RuntimeColumn」,設置爲x:Name =「RuntimeColumn」? – 2011-03-16 17:19:49

+0

在xaml中,將HeaderContainerStyle設置爲一個樣式,並設置 Pacman 2011-03-16 19:06:29

+1

@Joan Venge,只有您想要禁用的列需要使用「Loaded 「事件。 – Pacman 2011-03-20 13:46:07