wpf ListView - 禁用标题鼠标效果

时间:2013-04-15 02:37:46

标签: wpf listview gridview

我有一个简单的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>

1 个答案:

答案 0 :(得分: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>

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

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