2

我有一个简单的 1 列 ListView,我需要禁用 GridViewColumnHeader 的鼠标悬停效果。

我尝试从这里获取样式:http: //msdn.microsoft.com/en-us/library/ms788747.aspx

然而,这给了我的标题一个紫色渐变,所以我猜这是错误的样式。我注意到它有一个

<VisualState x:Name="MouseOver">

但我不知道如何在没有找到并包含正确的 GridViewColumnHeader 样式然后将其删除的情况下删除它。

我尝试了以下方法,但它没有做任何事情(VisualState 覆盖?)并且无论如何都不会工作,因为将背景设置为 null 不是我想要的。

       <Style x:Key="hcs" TargetType="{x:Type GridViewColumnHeader}">
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Background" Value="{x:Null}" />
                    <Setter Property="BorderBrush" Value="{x:Null}" />
                </Trigger>
            </Style.Triggers>
        </Style>
4

1 回答 1

0

问题是,就像您自己说的那样,处于 MouseOver 视觉状态及其情节提要。我认为摆脱冗余功能比以后尝试覆盖它更好。所以我们基本上只需要相同的风格,但没有故事板。至少我们需要有以下东西(可以通过您提供的链接在 MSDN 上找到):

 <Color x:Key="BorderLightColor">#FFCCCCCC</Color>
 <Color x:Key="BorderDarkColor">#FF444444</Color>

 <Style x:Key="GridViewColumnHeaderGripper"
           TargetType="Thumb">
      <!-- Full GridViewColumnHeaderGripper style here  -->
 </Style>

 <Style TargetType="GridViewColumnHeader">
     <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="GridViewColumnHeader">
              <!-- Standard template but with redundant Storyboard removed -->
          </ControlTemplate>
        </Setter.Value>
     </Setter>
  </Style>

最后一个样式没有键,因此它适用GridViewColumnHeader于页面\应用程序上的所有内容(取决于它的定义位置)。或者您可以设置密钥并仅在特定网格中使用它。

这是最低限度的,因此对于更可定制的方法,最好也复制默认样式的其他部分。

于 2013-04-15T11:52:07.503 回答