Control.UseSystemFocusVisuals Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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é
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 pourFocused
,Unfocused
etPointerFocused
. - Définissez les visuels focus.