다음을 통해 공유


UIElement.UseSystemFocusVisuals 속성

정의

컨트롤이 시스템에서 그린 포커스 시각적 개체를 사용하는지 또는 컨트롤 템플릿에 정의된 포커스 시각적 개체를 사용하는지 여부를 나타내는 값을 가져오거나 설정합니다.

public:
 property bool UseSystemFocusVisuals { bool get(); void set(bool value); };
bool UseSystemFocusVisuals();

void UseSystemFocusVisuals(bool value);
public bool UseSystemFocusVisuals { get; set; }
var boolean = uIElement.useSystemFocusVisuals;
uIElement.useSystemFocusVisuals = boolean;
Public Property UseSystemFocusVisuals As Boolean

속성 값

Boolean

bool

True이면 컨트롤이 시스템에서 그린 포커스 시각적 개체를 사용합니다. False이면 컨트롤이 ControlTemplate에 정의된 포커스 시각적 개체를 사용합니다.

기본값은 false입니다( 설명 참조).

예제

이 예제에서는 단추에 대한 사용자 지정 포커스 시각적 개체를 정의하는 ControlTemplate을 보여 줍니다.

컨트롤 템플릿의 일부 요소는 관련 부분을 보다 명확하게 하기 위해 표시되지 않습니다. 자세한 내용은 XAML 스타일을 참조하세요.

<Style TargetType="Button">

<!-- Set UseSystemFocusVisuals to false. -->
    <Setter Property="UseSystemFocusVisuals" Value="False"/> 
     ...

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Grid>
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualState x:Name="Normal"/>
                            <VisualState x:Name="PointerOver">
                             ...

                            </VisualState>
                        </VisualStateGroup>

<!-- Add VisualStateGroup for FocusStates. -->
                        <VisualStateGroup x:Name="FocusStates">
                            <VisualState x:Name="Focused">
                                <Storyboard>
                                    <DoubleAnimation Storyboard.TargetName="FocusVisualWhite"
                                                     Storyboard.TargetProperty="Opacity"
                                                     To="1"
                                                     Duration="0"/>
                                    <DoubleAnimation Storyboard.TargetName="FocusVisualBlack"
                                                     Storyboard.TargetProperty="Opacity"
                                                     To="1"
                                                     Duration="0"/>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="Unfocused"/>
                            <VisualState x:Name="PointerFocused"/>
                        </VisualStateGroup>

                    </VisualStateManager.VisualStateGroups>
                    <Border x:Name="Border"
                            Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}"
                            Margin="3">
                        <ContentPresenter x:Name="ContentPresenter"
                                          Content="{TemplateBinding Content}"
                                          ContentTransitions="{TemplateBinding ContentTransitions}"
                                          ContentTemplate="{TemplateBinding ContentTemplate}"
                                          Margin="{TemplateBinding Padding}"
                                          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                          VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
                                          AutomationProperties.AccessibilityView="Raw"/>
                    </Border>

<!-- Add elements for focus visuals. -->
                    <Rectangle x:Name="FocusVisualWhite"
                               IsHitTestVisible="False"
                               Stroke="{ThemeResource FocusVisualWhiteStrokeThemeBrush}"
                               StrokeEndLineCap="Square"
                               StrokeDashArray="1,1"
                               Opacity="0"
                               StrokeDashOffset="1.5"/>
                    <Rectangle x:Name="FocusVisualBlack"
                               IsHitTestVisible="False"
                               Stroke="{ThemeResource FocusVisualBlackStrokeThemeBrush}"
                               StrokeEndLineCap="Square"
                               StrokeDashArray="1,1"
                               Opacity="0"
                               StrokeDashOffset="0.5"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

설명

이 속성은 기본적으로 false이므로 자체 포커스 시각적 개체를 정의하는 사용자 지정 ControlTemplate 이 예상대로 작동합니다. 그러나 모든 XAML 프레임워크 컨트롤은 해당 속성에서 ControlTemplate 이 속성을 true로 설정하고 시스템 그리기 포커스 시각적 개체를 사용합니다.

컨트롤에 대한 사용자 지정 포커스 시각적 개체를 정의하려면 사용자 지정 ControlTemplate을 제공해야 합니다. 에서 ControlTemplate다음을 수행합니다.

  • 기본 ControlTemplate을 수정하는 경우 UseSystemFocusVisuals 속성을 false로 설정하여 시스템 포커스 시각적 개체를 해제해야 합니다. false로 설정하면 VisualStateManager 의 포커스 상태가 호출됩니다.
  • 에 대한 VisualStateGroup 을 정의합니다 FocusStates.
  • FocusStates 그룹에서 각 Focused, Unfocused및 에 대한 VisualState를 정의합니다PointerFocused.
  • 포커스 시각적 개체를 정의합니다.

적용 대상