UIElement.UseSystemFocusVisuals Proprietà

Definizione

Ottiene o imposta un valore che indica se il controllo utilizza oggetti visivi dello stato attivo disegnati dal sistema o dagli oggetti visivi dello stato attivo definiti nel modello di controllo.

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

Valore della proprietà

Boolean

bool

True, se il controllo utilizza oggetti visivi dello stato attivo disegnati dal sistema. False, se il controllo utilizza oggetti visivi dello stato attivo definiti in ControlTemplate.

Il valore predefinito è false (vedere la sezione Osservazioni).

Esempio

In questo esempio viene illustrato un oggetto ControlTemplate che definisce gli oggetti visivi dello stato attivo personalizzati per un controllo Button.

Alcuni elementi del modello di controllo non vengono visualizzati per rendere più chiare le parti pertinenti. Per altri dettagli, vedi Stili 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>

Commenti

Questa proprietà è false per impostazione predefinita, in modo che un controlTemplate personalizzato che definisce gli oggetti visivi dello stato attivo funzioni come previsto. Tuttavia, tutti i controlli del framework XAML impostano questa proprietà su true nei relativi ControlTemplate oggetti visivi e usano gli oggetti visivi dello stato attivo disegnati dal sistema.

Per definire oggetti visivi dello stato attivo personalizzati per un controllo, è necessario fornire un controlTemplate personalizzato. ControlTemplateIn eseguire le operazioni seguenti:

  • Se si modifica un controlTemplate predefinito, assicurarsi di impostare la proprietà UseSystemFocusVisuals su false per disattivare gli oggetti visivi dello stato attivo del sistema. Se impostato su false, vengono chiamati gli stati di stato attivo in VisualStateManager .
  • Definire un oggetto VisualStateGroup per FocusStates.
  • FocusStates Nel gruppo definire un oggetto VisualState per ogni oggetto Focused, Unfocusede PointerFocused.
  • Definire gli oggetti visivi dello stato attivo.

Si applica a