2016-10-21 2 views
0

UWP ComboBox의 "Unselected"VisualState에 해당하는 항목이 있습니까? 우리는 Windows 8에서 마이그레이션 중이며 서로 상호 호환되는 솔루션을 원합니다."선택되지 않은"VisualState for UWP ComboBoxItem?

ComboBoxItem의 기본 스타일을보고 UWP에 "Unslected"의 VisualState가없는 것 같습니다.

enter image description here

블루 하나가 선택되어있는 항목입니다 : 여기

은 무슨의 스크린 샷이다. UWP에서 " Unslected"시각적 상태가 없으므로 이전에 선택한 항목을 선택 취소하지 않습니다.

<Style x:Key="Style_ComboBox_CheckSelector_ItemContainer" TargetType="ComboBoxItem"> 
     <Setter Property="TabNavigation" Value="Local" /> 
     <Setter Property="Padding" Value="8,10" /> 
     <Setter Property="HorizontalContentAlignment" Value="Left" /> 
     <Setter Property="VerticalContentAlignment" Value="Center" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ComboBoxItem"> 
        <Border x:Name="LayoutRoot" 
         Background="{TemplateBinding Background}" 
         BorderBrush="{TemplateBinding BorderBrush}" 
         BorderThickness="{TemplateBinding BorderThickness}"> 
         <VisualStateManager.VisualStateGroups> 
          <VisualStateGroup x:Name="CommonStates"> 
           <VisualStateGroup.Transitions> 
            <VisualTransition GeneratedDuration="0:0:0" /> 
           </VisualStateGroup.Transitions> 
           <VisualState x:Name="Normal" /> 
           <VisualState x:Name="PointerOver"> 
            <Storyboard> 
             <DoubleAnimation Duration="0" 
                Storyboard.TargetName="Rectangle_Background_OverState" 
                Storyboard.TargetProperty="Opacity" 
                To="1" /> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="Disabled"> 
            <Storyboard> 
             <DoubleAnimation Duration="0" 
                Storyboard.TargetName="Rectangle_DisabledVisualElement" 
                Storyboard.TargetProperty="Opacity" 
                To="1" /> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="Pressed"> 
            <Storyboard> 
             <DoubleAnimation Duration="0" 
                Storyboard.TargetName="Rectangle_PressedVisualElement" 
                Storyboard.TargetProperty="Opacity" 
                To="1" /> 
            </Storyboard> 
           </VisualState> 
          </VisualStateGroup> 
          <VisualStateGroup x:Name="SelectionStates"> 
           <VisualStateGroup.Transitions> 
            <VisualTransition GeneratedDuration="0:0:0" /> 
           </VisualStateGroup.Transitions> 
           <VisualState x:Name="Unselected" /> 
           <VisualState x:Name="Selected"> 
            <Storyboard> 
             <DoubleAnimation Duration="0" 
                Storyboard.TargetName="ContentPresenter_Selected" 
                Storyboard.TargetProperty="Opacity" 
                To="1" /> 
             <DoubleAnimation Duration="0" 
                Storyboard.TargetName="Rectangle_FocusVisualElement" 
                Storyboard.TargetProperty="Opacity" 
                To="1" /> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="SelectedUnfocused"> 
            <Storyboard> 
             <DoubleAnimation Duration="0" 
                Storyboard.TargetName="ContentPresenter_Selected" 
                Storyboard.TargetProperty="Opacity" 
                To="1" /> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="SelectedDisabled"> 
            <Storyboard> 
             <DoubleAnimation Duration="0" 
                Storyboard.TargetName="ContentPresenter_Selected" 
                Storyboard.TargetProperty="Opacity" 
                To="1" /> 
             <DoubleAnimation Duration="0" 
                Storyboard.TargetName="Rectangle_DisabledVisualElement" 
                Storyboard.TargetProperty="Opacity" 
                To="1" /> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="SelectedPointerOver"> 
            <Storyboard> 
             <DoubleAnimation Duration="0" 
                Storyboard.TargetName="ContentPresenter_Selected" 
                Storyboard.TargetProperty="Opacity" 
                To="1" /> 
             <DoubleAnimation Duration="0" 
                Storyboard.TargetName="Rectangle_Background_OverState" 
                Storyboard.TargetProperty="Opacity" 
                To="1" /> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="SelectedPressed"> 
            <Storyboard> 
             <DoubleAnimation Duration="0" 
                Storyboard.TargetName="ContentPresenter_Selected" 
                Storyboard.TargetProperty="Opacity" 
                To="1" /> 
             <DoubleAnimation Duration="0" 
                Storyboard.TargetName="Rectangle_PressedVisualElement" 
                Storyboard.TargetProperty="Opacity" 
                To="1" /> 
            </Storyboard> 
           </VisualState> 
          </VisualStateGroup> 
          <VisualStateGroup x:Name="FocusStates"> 
           <VisualStateGroup.Transitions> 
            <VisualTransition GeneratedDuration="0:0:0" /> 
           </VisualStateGroup.Transitions> 
           <VisualState x:Name="Focused"> 
            <Storyboard> 
             <DoubleAnimation Duration="0" 
                Storyboard.TargetName="Rectangle_FocusVisualElement" 
                Storyboard.TargetProperty="Opacity" 
                To="1" /> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="Unfocused" /> 
           <VisualState x:Name="PointerFocused" /> 
          </VisualStateGroup> 
         </VisualStateManager.VisualStateGroups> 
         <Grid x:Name="InnerGrid"> 
          <Rectangle x:Name="Rectangle_Background_NormalState" Fill="#FF404040" /> 
          <Rectangle x:Name="Rectangle_Background_OverState" 
            Fill="#FF666666" 
            Opacity="0" 
            Stroke="#FF999999" 
            StrokeThickness="1" /> 
          <ContentPresenter x:Name="ContentPresenter" 
              Margin="{TemplateBinding Padding}" 
              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
              VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
              Content="{TemplateBinding Content}" 
              ContentTemplate="{TemplateBinding ContentTemplate}" 
              ContentTransitions="{TemplateBinding ContentTransitions}" 
              Foreground="#FFCCCCCC" /> 
          <ContentPresenter x:Name="ContentPresenter_Selected" 
              Margin="{TemplateBinding Padding}" 
              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
              VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
              Content="{TemplateBinding Content}" 
              ContentTemplate="{TemplateBinding ContentTemplate}" 
              ContentTransitions="{TemplateBinding ContentTransitions}" 
              Foreground="Blue" 
              Opacity="0" /> 
          <Grid x:Name="Grid_ControlOverlayParts" IsHitTestVisible="False"> 
           <Rectangle x:Name="Rectangle_PressedVisualElement" 
             Fill="#33FFFFFF" 
             Opacity="0" /> 
           <Rectangle x:Name="Rectangle_FocusVisualElement" 
             Opacity="0" /> 
           <Rectangle x:Name="Rectangle_DisabledVisualElement" 
             Fill="#7F1A1A1A" 
             Opacity="0" /> 
          </Grid> 
         </Grid> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

감사합니다 :

다음은 ComboBoxItem 스타일에 대한 내 코드입니다!

답변

1

Windows 8/8.1 및 UWP에서 같은 컨트롤에 대해 템플릿을 공유하는 것을 권장하지 않습니다. 대부분의 컨트롤 구현이 크게 변경되어 템플릿 부분이 달라질 수 있습니다. UWP 용으로 컴파일 할 때 Windows 8.1에서 컨트롤로 작동하는 템플릿이 작동하지 않을 수 있습니다.

ComboBoxItem 컨트롤의 시각 상태는 Windows 8.1과 UWP간에 다릅니다. Windows 8.1에서는 UWP에서 "Selected"VisualState가 "CommonStates"VisualStateGroup의 일부인 반면, "SelectedStates"VisualStateGroup에는 "Selected"VisualState가 포함되어 있습니다.

템플릿은 UWP 구현이 아닌 Windows 8.1 구현을 준수합니다. Windows 8.1 용과 UWP 용으로 두 개의 별도 템플릿이 필요합니다.

+0

감사합니다. 예, 우리는 그 패턴을 따르고 있지만 가능한 한 많이, 더 적은 코드/파일을 원합니다. 우리는 그것을 만들었습니다. 나는 아래에있는 해결책을 게시 할 것입니다. – Water