2011-09-27 4 views
2

일부 개체가있는 간단한 ListBox가 있습니다. 마우스가 어떤 오브젝트 위에 있으면 오브젝트 배경색이 변경됩니다.항목에 마우스를 올려 놓았을 때 ListBox에서 항목의 색상 변경을 비활성화하는 방법은 무엇입니까?

개체를 사용하지 않고이 색 변경을 피할 수 있습니까? (이 개체에는 사용하도록 설정해야하는 버튼이 포함되어 있습니다.)

도움 주셔서 감사합니다.

+0

마우스가 위에있을 때 목록 상자 항목 컨테이너를 강조 표시하고 싶지 않다고 가정했습니다. 그러나 "객체"는 일종의 다른 컨트롤이기 때문에 유형에 대한 정보가 중요합니다. – vorrtex

답변

3

ListBoxItem 템플릿에서 시각적 상태 애니메이션을 제거 할 수 있습니다. 기본 템플릿은 here입니다.

마우스 오버 배경이없는 스타일은 이렇게 보이는 : 당신은 그냥 당신이 ItemsControl에 사용할 수 있습니다 강조하지 않도록하려면

<Style x:Key="IgnoreMouseOverItem" TargetType="ListBoxItem"> 
    <Setter Property="Padding" Value="3" /> 
    <Setter Property="HorizontalContentAlignment" Value="Left" /> 
    <Setter Property="VerticalContentAlignment" Value="Top" /> 
    <Setter Property="Background" Value="Transparent" /> 
    <Setter Property="BorderThickness" Value="1"/> 
    <Setter Property="TabNavigation" Value="Local" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ListBoxItem"> 
       <Grid Background="{TemplateBinding Background}"> 
        <vsm:VisualStateManager.VisualStateGroups> 
         <vsm:VisualStateGroup x:Name="CommonStates"> 
          <vsm:VisualState x:Name="Normal" /> 
          <vsm:VisualState x:Name="MouseOver"> 
           <!--<Storyboard> 
            <DoubleAnimation Storyboard.TargetName="fillColor" Storyboard.TargetProperty="Opacity" Duration="0" To=".35"/> 
           </Storyboard>--> 
          </vsm:VisualState> 
          <vsm:VisualState x:Name="Disabled"> 
           <Storyboard> 
            <DoubleAnimation Storyboard.TargetName="contentPresenter" Storyboard.TargetProperty="Opacity" Duration="0" To=".55" /> 
           </Storyboard> 
          </vsm:VisualState> 
         </vsm:VisualStateGroup> 
         <vsm:VisualStateGroup x:Name="SelectionStates"> 
          <vsm:VisualState x:Name="Unselected" /> 
          <vsm:VisualState x:Name="Selected"> 
           <Storyboard> 
            <DoubleAnimation Storyboard.TargetName="fillColor2" Storyboard.TargetProperty="Opacity" Duration="0" To=".75"/> 
           </Storyboard> 
          </vsm:VisualState> 
         </vsm:VisualStateGroup> 
         <vsm:VisualStateGroup x:Name="FocusStates"> 
          <vsm:VisualState x:Name="Focused"> 
           <Storyboard> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="FocusVisualElement" Storyboard.TargetProperty="Visibility" Duration="0"> 
             <DiscreteObjectKeyFrame KeyTime="0"> 
              <DiscreteObjectKeyFrame.Value> 
               <Visibility>Visible</Visibility> 
              </DiscreteObjectKeyFrame.Value> 
             </DiscreteObjectKeyFrame> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </vsm:VisualState> 
          <vsm:VisualState x:Name="Unfocused"/> 
         </vsm:VisualStateGroup> 
        </vsm:VisualStateManager.VisualStateGroups> 
        <Rectangle x:Name="fillColor" Opacity="0" Fill="#FFBADDE9" IsHitTestVisible="False" RadiusX="1" RadiusY="1"/> 
        <Rectangle x:Name="fillColor2" Opacity="0" Fill="#FFBADDE9" IsHitTestVisible="False" RadiusX="1" RadiusY="1"/> 
        <ContentPresenter 
          x:Name="contentPresenter" 
          Content="{TemplateBinding Content}" 
          ContentTemplate="{TemplateBinding ContentTemplate}" 
          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
          Margin="{TemplateBinding Padding}"/> 
        <Rectangle x:Name="FocusVisualElement" Stroke="#FF6DBDD1" StrokeThickness="1" Visibility="Collapsed" RadiusX="1" RadiusY="1" /> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

그리고이 목록 상자

<ListBox ItemContainerStyle="{StaticResource IgnoreMouseOverItem}" /> 
+0

방금 ​​태그가 누락되었습니다 ;-) –

+0

@ user2056563 정확히 무엇을 원하십니까? 왜 지금 우리와 같은 페이지에 대한 링크를 게시 했습니까? – vorrtex

+0

@vorrtex 죄송합니다. 해당 의견을 삭제하겠습니다.이 http://stackoverflow.com/questions/22578128/list-box-with-multiple-data-template-style-for-selected-item에 대한 도움이 필요했습니다. – user2056563

관련 문제