UIElement.UseSystemFocusVisuals Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece un valor que indica si el control usa objetos visuales de foco dibujados por el sistema o los objetos visuales de foco 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 = uIElement.useSystemFocusVisuals;
uIElement.useSystemFocusVisuals = boolean;
Public Property UseSystemFocusVisuals As Boolean
Valor de propiedad
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. Para obtener más información, consulta 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>
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 sus ControlTemplate
objetos visuales de foco dibujados por el sistema 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.
ControlTemplate
En , 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 un objeto VisualState para cada uno deFocused
,Unfocused
yPointerFocused
. - Defina los objetos visuales de foco.