我的窗口中有一个 ListView,它有许多列。部分或所有列不得由用户调整大小,因为它们已经具有最佳宽度,而意外调整大小只会使情况变得更糟。现在这个问题有一些可用的答案,但所有这些都以重新设计控件而告终。不幸的是,我最终得到了大量 XAML 代码页面,这些页面高度特定于平台/主题。当我使用 Blend 创建默认样式的副本时,我得到了许多仅适用于 Win7 Aero 的渐变等,但不适用于 XP 主题或即将出现的任何内容。

因此,替换控件的整个样式不是一种选择。 (它几乎从来都不是。)

我已经确定了需要隐藏的部分,它被命名为“PART_HeaderGripper”。我以前做过这样的事情,在代码隐藏中使用以下代码从 ProgressBar 中删除运行的发光和其他部分:

var glow = progressBar.Template.FindName("PART_GlowRect", progressBar) as FrameworkElement;
if (glow != null) glow.Visibility = visibility;

但这不适用于 GridViewColumnHeader,因为 Template.FindName 找不到任何东西(返回 null)。我很确定必须有一种方法可以在运行时修改视觉效果。但我现在想不通。任何想法?

最佳答案

测试:

<GridViewColumnHeader Content="Value" IsHitTestVisible="False"/>

10-08 18:19