Compartilhar via


UIElement.UseSystemFocusVisuals Propriedade

Definição

Obtém ou define um valor que indica se o controle usa visuais de foco desenhados pelo sistema ou visuais de foco definidos no modelo de controle.

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

Valor da propriedade

Boolean

bool

True, se o controle usar visuais de foco desenhados pelo sistema. False, se o controle usar visuais de foco definidos no ControlTemplate.

O padrão é false (consulte Comentários).

Exemplos

Este exemplo mostra um ControlTemplate que define visuais de foco personalizados para um Botão.

Alguns elementos do modelo de controle não são mostrados para tornar as partes relevantes mais claras. Para obter mais detalhes, consulte Estilos 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>

Comentários

Essa propriedade é falsa por padrão para que um ControlTemplate personalizado que define seus próprios visuais de foco funcione conforme o esperado. No entanto, todos os controles de estrutura XAML definem essa propriedade como true em seus ControlTemplate visuais de foco desenhados pelo sistema.

Para definir visuais de foco personalizados para um controle, você precisa fornecer um ControlTemplate personalizado. ControlTemplateNo , faça o seguinte:

  • Se você estiver modificando um ControlTemplate padrão, defina a propriedade UseSystemFocusVisuals como false para desativar os visuais de foco do sistema. Quando definido como false, os estados de foco no VisualStateManager são chamados.
  • Defina um VisualStateGroup para FocusStates.
  • FocusStates No grupo, defina um VisualState para cada um dos Focused, Unfocusede PointerFocused.
  • Defina os visuais de foco.

Aplica-se a