2013-10-17 3 views
0

WPF를 사용하여 Windows Store App을 개발하고 있습니다. 기본 페이지에는 모든 화면을 다루는 배경 이미지가 있습니다. 약간 ListBox 사용자 정의 ItemTemplate 및 투명 배경 사용하고 있습니다. 지금까지는 괜찮습니다.ListBox에서 선택한 항목의 기본 배경을 변경하는 방법

여기에있는 항목은 ListBox에서 항목을 선택하면 보라색 (기본적으로 같음)으로 강조 표시되고 목록 상자의 배경이 흰색으로 바뀝니다.

<ListBox x:Name="listBox1" Background="Transparent" BorderBrush="Transparent" 
     ItemTemplate=" {StaticResource listBox1DataTemplate}" 
     SelectionChanged="listBox1_SelectionChanged" 
     ItemContainerStyle="{StaticResource StylelistBox1}"/> 

스타일을 사용하여 항목을 선택하여 적용하려고 시도했습니다. 그러나 작동하지 않습니다.

선택한 항목의 기본 색상을 변경하는 방법을 아는 사람이 있습니까?

감사합니다.

+0

가능한 복제 [선택 목록 상자 항목의 배경색 변경] (http://stackoverflow.com/questions/2138200/change-background-color-for-selected-listbox-item/2138237 # 2138237) –

+0

안녕하세요. 답장을 보내 주셔서 감사합니다. 이미 게시 한 링크를 보았습니다. 그러나 거기에 주어진 해결책은 Windows 8 OS에는 적용되지 않습니다. Windwos 8에서 구현하는 방법에 대한 몇 가지 의견이 있습니다. 테스트 할 것입니다. – MikePR

답변

0

아마도 사용자는 요구 사항에 따라 ListBoxItem의 기본 스타일 템플릿을 변경해야합니다.

<Style 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> 

MSDN REFERENCE HERE

+0

안녕하세요. 내가 게시 한 코드를 기반으로 비슷한 것을했습니다. 이제 제대로 작동합니다. 선택한 항목에 대한 사용자 지정 색이 있습니다. – MikePR