阻止用户使用WPF ListView调整列的大小

时间:2008-10-08 09:41:14

标签: wpf gridview listview

如何阻止用户在ListView控件中调整网格视图列?

5 个答案:

答案 0 :(得分:28)

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

在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>

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

希望这有助于某人。

答案 1 :(得分:20)

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

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

答案 2 :(得分:13)

我找到了一个解决方案,可能有一天会帮助其他人;)

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

还有另一个解决方案,即对here描述的GridViewColumn进行子类化。出于表示目的,我更喜欢xaml解决方案

答案 3 :(得分:1)

一个平滑的解决方案:

<GridViewColumn ...>
    <GridViewColumn.HeaderContainerStyle>
        <Style TargetType="{x:Type FrameworkElement}">
            <Setter Property="IsHitTestVisible" Value="False"/>
        </Style>
    </GridViewColumn.HeaderContainerStyle>
</GridViewColumn>

答案 4 :(得分:-1)

我能够用这篇文章中的说明做类似的事情

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

我无法使用完整的XAML解决方案,因为我正在构建我的代码中的所有内容,因为它的动态。第一次尝试时工作得很好。