2011-03-16 24 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