Compartir a través de


Control.UseSystemFocusVisuals Propiedad

Definición

Obtiene o establece un valor que indica si el control usa objetos visuales de foco dibujados por el sistema o los definidos en la plantilla de control.

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

Valor de propiedad

Boolean

bool

true si el control usa objetos visuales de foco dibujados por el sistema; false si el control usa objetos visuales de foco definidos en ControlTemplate. El valor predeterminado es false; vea Comentarios.

Ejemplos

En este ejemplo se muestra un ControlTemplate que define objetos visuales de foco personalizados para un botón.

No se muestran algunos elementos de la plantilla de control para que las partes pertinentes sean más claras.

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

Comentarios

Esta propiedad es false de forma predeterminada para que un ControlTemplate personalizado que defina sus propios objetos visuales de foco funcione según lo previsto. Sin embargo, todos los controles de marco XAML establecen esta propiedad en true en su ControlTemplate y usan objetos visuales de foco dibujados por el sistema.

Para definir objetos visuales de foco personalizados para un control, debe proporcionar un controlTemplate personalizado. En ControlTemplate, haga lo siguiente:

  • Si va a modificar un ControlTemplate predeterminado, asegúrese de establecer la propiedad UseSystemFocusVisuals en false para desactivar los objetos visuales de foco del sistema. Cuando se establece en false, se llama a los estados de foco en VisualStateManager .
  • Defina un objeto VisualStateGroup para FocusStates.
  • En el FocusStates grupo, defina VisualStates para Focused, Unfocusedy PointerFocused.
  • Defina los objetos visuales de foco.

Se aplica a

Consulte también