2012-12-31 4 views
1

ListView에서 선택할 때 행을 강조 표시하려고하지만 작동하지 않습니다. 누구든지 내가 가지고있는 것을보고 내가 뭘 잘못하고 있는지 말해 줄 수 있습니까? 또 다른 질문은 내 ViewModel에 속성을 가지고 bool 값을 기준으로 Background 색상을 설정하면 어떻게 될까요?IsSelected 행을 강조 표시하는 방법

<ListView.ItemContainerStyle> 
    <Style TargetType="{x:Type ListViewItem}"> 
     <Style.Triggers> 
      <Trigger Property="IsSelected" Value="True"> 
       <Setter Property="Background" Value="Green" /> 
      </Trigger> 

      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="Background" Value="Yellow" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</ListView.ItemContainerStyle> 

답변

3

문제는 여기에 ListView에 대한 항목 템플릿이 자동으로 브러시 타입 SystemColors.HighlightBrushKey의 "선택한 하이라이트"를 추가합니다 - "진정한 해결책"항목 템플릿 정의를 무시하는 것을,

<ListView.ItemContainerStyle> 
    <Style TargetType="{x:Type ListViewItem}"> 
     <Style.Resources> 
      <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Green"/> 
     </Style.Resources> 
     <Style.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="Background" Value="Yellow" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</ListView.ItemContainerStyle> 
+0

덕분에, 나를 위해 일한 :하지만 한 가지 방법은 당신이 당신이 여기 계신 얻을 수있는 것은이 같은 것입니다. – user1884032

0
  <ListView Name="listBox1" ItemsSource="{Binding Path=SimpleList}" 
         HorizontalAlignment="Left" VerticalAlignment="Top" Background="Olive"> 
       <ListView.ItemContainerStyle> 
        <Style TargetType="ListViewItem"> 
         <EventSetter Event="MouseEnter" Handler="listBox1_ListBoxItem_MouseEnter"/> 
         <EventSetter Event="MouseLeave" Handler="listBox1_ListBoxItem_MouseLeave"/> 
         <Style.Resources> 
          <!-- Background of selected item when focussed --> 
          <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" 
           Color="Green"/> 
          <!-- Background of selected item when not focussed --> 
          <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" 
           Color="Yellow" /> 
         </Style.Resources> 
         <Style.Triggers> 
          <Trigger Property="IsMouseOver" Value="True"> 
           <!--<Setter Property="FontWeight" Value="Bold" />--> 
           <Setter Property="Background" Value="Orange" /> 
          </Trigger> 
         </Style.Triggers> 
        </Style> 
       </ListView.ItemContainerStyle> 
      </ListView> 
+1

"IsMouseOver"에 대한 정상적인 트리거가 잘 작동해야합니다. ItemTemplate에 의해 재정의되는 선택된 스타일입니다. – JerKimball

+0

@JerKimball 맞습니다. +1 – Paparazzi

관련 문제