Partage via


Control.UseSystemFocusVisuals Propriété

Définition

Obtient ou définit une valeur qui indique si le contrôle utilise des visuels focus qui sont dessinés par le système ou ceux définis dans le modèle de contrôle.

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

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

Valeur de propriété

Boolean

bool

true si le contrôle utilise des visuels de focus dessinés par le système ; false si le contrôle utilise des visuels focus définis dans le ControlTemplate. La valeur par défaut est false ; voir Remarques.

Exemples

Cet exemple montre un ControlTemplate qui définit des visuels de focus personnalisés pour un Bouton.

Certains éléments du modèle de contrôle ne sont pas affichés pour rendre les parties pertinentes plus claires.

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

Remarques

Cette propriété a la valeur false par défaut, de sorte qu’un ControlTemplate personnalisé qui définit ses propres visuels de focus fonctionne comme prévu. Toutefois, tous les contrôles d’infrastructure XAML définissent cette propriété sur true dans leur ControlTemplate et utilisent des visuels focus dessinés par le système.

Pour définir des visuels de focus personnalisés pour un contrôle, vous devez fournir un ControlTemplate personnalisé. Dans ControlTemplate, procédez comme suit :

  • Si vous modifiez un ControlTemplate par défaut, veillez à définir la propriété UseSystemFocusVisuals sur false pour désactiver les visuels focus système. Lorsque la valeur est false, les états de focus dans VisualStateManager sont appelés.
  • Définissez un VisualStateGroup pour FocusStates.
  • Dans le FocusStates groupe, définissez VisualStates pour Focused, Unfocusedet PointerFocused.
  • Définissez les visuels focus.

S’applique à

Voir aussi