Condividi tramite


Control.UseSystemFocusVisuals Proprietà

Definizione

Ottiene o imposta un valore che indica se il controllo usa oggetti visivi dello stato attivo disegnati dal sistema o quelli 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 = control.useSystemFocusVisuals;
control.useSystemFocusVisuals = boolean;
Public Property UseSystemFocusVisuals As Boolean

Valore della proprietà

Boolean

bool

true se il controllo usa gli oggetti visivi dello stato attivo disegnati dal sistema; false se il controllo usa oggetti visivi dello stato attivo definiti in ControlTemplate. Il valore predefinito è false; vedere Osservazioni.

Esempio

Questo esempio mostra un oggetto ControlTemplate che definisce gli oggetti visivi dello stato attivo personalizzati per un pulsante.

Alcuni elementi del modello di controllo non vengono visualizzati per rendere più chiare le parti pertinenti.

<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 oggetto 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 nella proprietà ControlTemplate e usano gli oggetti visivi dello stato attivo disegnata dal sistema.

Per definire oggetti visivi dello stato attivo personalizzati per un controllo, è necessario fornire un controllo PersonalizzatoTemplate. In ControlTemplate eseguire le operazioni seguenti:

  • Se si modifica un ControlloTemplate 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 attivo in VisualStateManager .
  • Definire un oggetto VisualStateGroup per FocusStates.
  • FocusStates Nel gruppo definire VisualStates per Focused, Unfocusede PointerFocused.
  • Definire gli oggetti visivi dello stato attivo.

Si applica a

Vedi anche