2017-10-19 162 views
0

我有一個ListView與自定義ItemTemplate的項目。 我想刪除或更改選擇的視覺效果。從自定義WPF ListView中刪除選擇高亮

到目前爲止,我試過assgining定製ItemContainerStyleListView

<ListView x:Name="DispList" ItemContainerStyle="{StaticResource MySty}" ItemTemplate="{StaticResource Mine}"> 

</ListView> 

而下的資源,定義樣式如下:

<Style TargetType="{x:Type ListViewItem}" x:Key="MySty"> 
     <Style.Resources> 
      <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/> 
     </Style.Resources> 
</Style> 

不幸的是,這是行不通的。我錯過了什麼?

回答

1

嘗試覆蓋系統顏色的這種方法在Windows 8及更高版本上無效。 您需要修改ListViewItem容器的ControlTemplate。

參考:ListView Selected Item Style Override

一個例子:

<ListView> 
    <ListView.ItemContainerStyle> 
     <Style TargetType="{x:Type ListViewItem}"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type ListBoxItem}"> 
         <Border x:Name="RootBorder"> 
          <ContentPresenter/> 
         </Border> 
         <ControlTemplate.Triggers> 
          <Trigger Property="IsMouseOver" Value="True"> 
           <Setter TargetName="RootBorder" Property="BorderBrush" Value="Red"/> 
           <Setter TargetName="RootBorder" Property="BorderThickness" Value="1"/> 
          </Trigger> 
          <!--<Trigger Property="IsSelected" Value="True"> 
           <Setter TargetName="RootBorder" Property="Background" Value="LightBlue"/> 
          </Trigger>--> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </ListView.ItemContainerStyle> 
    <ListViewItem>123</ListViewItem> 
    <ListViewItem>456</ListViewItem> 
    <ListViewItem>789</ListViewItem> 
</ListView> 
+0

感謝您的指向正確的方向,但你可以請詳細說明下什麼性質'ControlTemplate'對應的視覺效果的選擇?對不起,我只想禁用選擇可見性。 –

+0

我修改了我的答案,添加了一個可以實現你想要的功能的例子。 – Iron