UIElement.UseSystemFocusVisuals 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
컨트롤이 시스템에서 그린 포커스 시각적 개체를 사용하는지 또는 컨트롤 템플릿에 정의된 포커스 시각적 개체를 사용하는지 여부를 나타내는 값을 가져오거나 설정합니다.
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
속성 값
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
. - 포커스 시각적 개체를 정의합니다.