2017-02-13 34 views
1

的我已经搜查回答这个简单的问题,但没有找到解决的办法呢。 我有以下代码:WPF移除选择/鼠标光泽效果在GridView控件

<Grid> 
    <Border BorderBrush="#666666" BorderThickness="1,1,1,1" CornerRadius="3"> 
     <Border.Background> 
      <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
       <GradientStop Color="#FF020f1e" Offset="0"/> 
       <GradientStop Color="#FF484F58" Offset="1"/> 
      </LinearGradientBrush> 
     </Border.Background> 
     <ListView Name="lvUsers" Background="Transparent" Foreground="White" Margin="3" FontSize="12" SelectionChanged="lvUsers_SelectionChanged"> 

      <ListView.Template> 
       <ControlTemplate TargetType="{x:Type ListView}"> 
        <Border CornerRadius="1" BorderThickness="1" BorderBrush="Transparent"> 
         <ScrollViewer> 
          <ItemsPresenter /> 
         </ScrollViewer> 
        </Border> 
       </ControlTemplate> 
      </ListView.Template> 

      <ListView.View> 
       <GridView> 

        <GridView.Columns> 
         <GridViewColumn> 
          <GridViewColumn.CellTemplate> 
           <DataTemplate> 
            <CheckBox Tag="{Binding ID}" IsChecked="{Binding IsChecked}" Checked="CheckBox_CheckedChanged" Unchecked="CheckBox_CheckedChanged" IsHitTestVisible="False" Focusable="False"/> 
           </DataTemplate> 
          </GridViewColumn.CellTemplate> 
         </GridViewColumn> 
         <GridViewColumn DisplayMemberBinding="{Binding ID}" Header="ID" /> 
         <GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name" /> 
        </GridView.Columns> 
       </GridView>     
      </ListView.View> 

      <ListView.ItemContainerStyle> 
       <Style TargetType="ListViewItem"> 
        <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListViewItem_PreviewMouseLeftButtonDown" /> 

        <Style.Triggers> 
         <Trigger Property="IsMouseOver" Value="true"> 
          <Setter Property="Background" Value="Transparent"/> 

         </Trigger> 
         <Trigger Property="IsSelected" Value="true"> 
          <Setter Property="Background" Value="Transparent"/> 
          <Setter Property="BorderBrush" Value="Black"/> 
         </Trigger> 

        </Style.Triggers> 
       </Style> 
      </ListView.ItemContainerStyle> 
     </ListView> 
    </Border> 
</Grid> 

导致以下效果,当我选择或行“鼠标悬停”:

MyApplication

我想删除的光泽效果,并获得正是的平原 “ListView控件” 的作风:

Target Application

你能告诉我实现这个最简单的方法吗?

非常感谢您

回答

0

的ListViewItem有一些奇特的触发它的模板,在某些情况下(例如,对于选择项),改变背景(Controltemplate.Triggers)。要删除他们设置一个简化的模板,没有触发器:

<Style TargetType="ListViewItem"> 
<Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type ListViewItem}"> 
      <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" 
        BorderThickness="{TemplateBinding BorderThickness}" 
        Background="{TemplateBinding Background}" 
        Padding="{TemplateBinding Padding}" 
        SnapsToDevicePixels="true"> 
       <GridViewRowPresenter 
        HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
        SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" 
        VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
      </Border> 
     </ControlTemplate> 
    </Setter.Value> 
</Setter> 
<Style.Triggers> 
<!-- your triggers for IsMouseOver and IsSelected --> 
</Style.Triggers> 
+0

这个工作对我来说,非常感谢你! – Enrico

0

你显然正在使用一些自定义样式提供这种效果。

你可以尝试将ListViewStyle属性设置为{x:Null}使用默认样式:

<ListView Style="{x:Null}" Name="lvUsers" Background="Transparent" Foreground="White" Margin="3" FontSize="12" SelectionChanged="lvUsers_SelectionChanged"> 
...