我有一个简单的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>
答案 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
(取决于它的定义位置)。或者您可以设置密钥并仅在特定网格中使用它。
这是最低限度,因此对于更多可自定义的方法,复制默认样式的其他部分可能更好。