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 です ( 「解説」を参照)。
例
この例では、Button のカスタム フォーカス ビジュアルを定義する 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 フレームワーク コントロールでは、このプロパティを true ControlTemplate
に設定し、システム描画フォーカス ビジュアルを使用します。
コントロールのカスタム フォーカス ビジュアルを定義するには、カスタム ControlTemplate を指定する必要があります。 で ControlTemplate
、次の操作を行います。
- 既定の ControlTemplate を変更する場合は、システム フォーカス ビジュアルをオフにするには、 UseSystemFocusVisuals プロパティを false に設定してください。 false に設定すると、 VisualStateManager のフォーカス状態が呼び出されます。
-
の VisualStateGroup を定義します
FocusStates
。 - グループで
FocusStates
、および のそれぞれにFocused
Unfocused
VisualState を定義しますPointerFocused
。 - フォーカス ビジュアルを定義します。