26

如何防止用户使用 ListView 控件调整 GridViewColumns 的大小?

4

5 回答 5

34

对于那些寻求更快更简单答案的人。

在 ColumnHeaderContainerStyle 中将 IsEnabled 设置为 False。这将阻止用户调整大小。

像这样:

<GridView.ColumnHeaderContainerStyle>
  <Style TargetType="{x:Type GridViewColumnHeader}">
       <Setter Property="IsEnabled" Value="False"/>
  </Style>
</GridView.ColumnHeaderContainerStyle>

如果要修复禁用的灰显颜色,请在 IsEnabled 属性上添加一个触发器并修复您需要的内容。

<GridView.ColumnHeaderContainerStyle>
   <Style TargetType="{x:Type GridViewColumnHeader}">
       <Setter Property="IsEnabled" Value="False"/>
    <Style.Triggers>
       <Trigger Property="IsEnabled" Value="False">                
          <Setter Property="TextElement.Foreground" Value="Black"/>                       
       </Trigger>
    </Style.Triggers>
  </Style>
</GridView.ColumnHeaderContainerStyle>

这个答案可能不像其他帖子那样优雅;但就我而言,我所需要的只是一种快速的方法。

希望这可以帮助某人。

于 2013-06-18T05:22:32.723 回答
28

Darkonekt 的回答很好,但是最好设置IsHitTestVisible为 false 而不是IsEnabled. 这样做的好处是不会使标题变灰。

<GridView.ColumnHeaderContainerStyle>
    <Style BasedOn="{StaticResource {x:Type GridViewColumnHeader}}" TargetType="{x:Type GridViewColumnHeader}">
        <Setter Property="IsHitTestVisible" Value="False"/>
    </Style>
</GridView.ColumnHeaderContainerStyle>
于 2013-11-11T16:08:49.143 回答
15

我找到了一个解决方案,也许有一天它会帮助别人;)

您必须覆盖 GridViewColumnHeader 的 ControlTemplate(默认模板在此处)并从模板中删除PART_HeaderGripper以防止调整列的大小。

还有另一种解决方案,其中介绍了此处描述的子类化 GridViewColumn 。出于表示目的,我更喜欢仅 xaml 的解决方案

于 2008-10-08T10:30:27.913 回答
1

一个顺利的解决方案:

<GridViewColumn ...>
    <GridViewColumn.HeaderContainerStyle>
        <Style TargetType="{x:Type FrameworkElement}">
            <Setter Property="IsHitTestVisible" Value="False"/>
        </Style>
    </GridViewColumn.HeaderContainerStyle>
</GridViewColumn>
于 2020-09-24T10:57:36.873 回答
-2

我可以按照这篇文章中的说明做类似的事情

http://blogs.msdn.com/b/atc_avalon_team/archive/2006/04/11/573037.aspx

我无法使用完整的 XAML 解决方案,因为由于它的动态性,我在代码中构建了所有内容。第一次尝试效果很好。

于 2010-08-10T12:55:38.607 回答