2016-05-11 5 views
1

У меня есть простой вид списка.Удалить ListView мышь над

<ListView x:Name="DatabasesLstVw" ItemsSource="{Binding Path=Issues}" 
        ItemContainerStyle="{StaticResource removeMouseOverStyle}" 
        AlternationCount="2" Grid.Row="1" Margin="20,10,20,0" 
        HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
        FontSize="12" FontWeight="Normal" 
        BorderThickness="0" Background="Transparent" 
        ScrollViewer.HorizontalScrollBarVisibility="Disabled"> 
      <ListView.Resources> 
       <Style TargetType="GridViewColumnHeader"> 
        <Setter Property="Visibility" Value="Collapsed" /> 
       </Style> 
      </ListView.Resources> 
      <ListView.View> 
       <GridView > 
        <GridViewColumn Header="Message"> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <TextBlock TextWrapping="Wrap" Text="{Binding Name}" /> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
       </GridView> 
      </ListView.View> 
     </ListView> 

Я создал стиль, пытаясь удалить мышь по умолчанию и выбрать стиль.

<Style x:Key="removeMouseOverStyle" TargetType="{x:Type ListViewItem}"> 
      <Style.Triggers> 

       <Trigger Property="IsSelected" Value="True"> 
        <Setter Property="Background" Value="Transparent"></Setter> 
        <Setter Property="BorderThickness" Value="0"/> 
        <Setter Property="Margin" Value="0,0,0,0"/> 
        <Setter Property="Padding" Value="0"/> 
        <Setter Property="FontSize" Value="12"/> 
       </Trigger> 
       <Trigger Property="ItemsControl.IsMouseOver" Value="true"> 
        <Setter Property="Background" Value="Transparent"/> 
        <Setter Property="BorderThickness" Value="0"/> 
        <Setter Property="Margin" Value="0"/> 
        <Setter Property="Padding" Value="0"/> 
        <Setter Property="FontSize" Value="12"/>  
        <Setter Property="FontWeight" Value="Normal"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 

I can not post, что он делает, не пытаясь создать изображение gif. По сути, он немного перепрыгивает с помощью мыши. Сначала я думал, что это настройка маржи, а затем попробовал отступы и размер шрифта.

Что именно эта мышь по умолчанию делает и как ее удалить?

ответ

2

Может быть много способов, как они могли бы реализовать выделение \ мышь. Например, часто это делается путем отображения отдельной границы для каждого состояния. Для управления, такого простого, как ListViewItem, лучше переопределить его ControlTemplate и делать то, что вам нужно. Вы можете использовать шаблон управления по умолчанию, просто удалить триггеры:

<Style x:Key="removeMouseOverStyle" 
      TargetType="ListViewItem"> 
     <Setter Property="SnapsToDevicePixels" 
       Value="true" /> 
     <Setter Property="OverridesDefaultStyle" 
       Value="true" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ListBoxItem"> 
        <Border Name="Border" 
          Padding="2" 
          SnapsToDevicePixels="true" 
          Background="Transparent"> 
         <GridViewRowPresenter VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
</Style> 

С помощью этого стиля элементы не изменит их внешний вид в при выборе или наведении курсора мыши. Кроме того, вы можете использовать базовый элемент управления ItemsControl - он по умолчанию не имеет выбора \ mouse over behavior.

+0

Ваши работы, как очарование, теперь мне просто интересно, почему вы работали, а у меня не было того, что OverridesDefaultStyle? Я пробовал 3 разные версии этого кода, которые не могли заставить вас работать, благодарю вас за вашу помощь. – DaImTo

+1

Нет, он не работает без OverridesDefaultStyle. – Evk