如何阻止用户在ListView控件中调整网格视图列?
答案 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解决方案,因为我正在构建我的代码中的所有内容,因为它的动态。第一次尝试时工作得很好。