Freigeben über


Control.UseSystemFocusVisuals Eigenschaft

Definition

Ruft einen Wert ab, der angibt, ob das Steuerelement Fokusvisuals verwendet, die vom System gezeichnet werden, oder solche, die in der Steuerelementvorlage definiert sind, oder legt ihn fest.

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

Eigenschaftswert

Boolean

bool

TRUE , wenn das Steuerelement visuelle Fokuselemente verwendet, die vom System gezeichnet wurden; false , wenn das Steuerelement visuelle Fokuselemente verwendet, die in controlTemplate definiert sind. Der Standardwert ist false. siehe Hinweise.

Beispiele

Dieses Beispiel zeigt eine ControlTemplate , die benutzerdefinierte Fokusvisuals für eine Schaltfläche definiert.

Einige Elemente der Steuerelementvorlage werden nicht angezeigt, um die relevanten Teile übersichtlicher zu machen.

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

Hinweise

Diese Eigenschaft ist standardmäßig false , sodass eine benutzerdefinierte ControlTemplate , die ihre eigenen Fokusvisuals definiert, wie erwartet funktioniert. Alle XAML-Framework-Steuerelemente legen diese Eigenschaft jedoch in ihrer ControlTemplate auf true fest und verwenden visuals vom System gezeichneten Fokus.

Um benutzerdefinierte Fokusvisuals für ein Steuerelement zu definieren, müssen Sie eine benutzerdefinierte ControlTemplate bereitstellen. Führen Sie in controlTemplate die folgenden Schritte aus:

  • Wenn Sie eine Standardmäßige ControlTemplate ändern, stellen Sie sicher, dass Sie die UseSystemFocusVisuals-Eigenschaft auf false festlegen, um die Visuellen Elemente des Systemfokus zu deaktivieren. Wenn diese Einstellung auf false festgelegt ist, werden die Fokuszustände im VisualStateManager aufgerufen.
  • Definieren Sie eine VisualStateGroup für FocusStates.
  • Definieren Sie in der FocusStates Gruppe VisualStates für Focused, Unfocusedund PointerFocused.
  • Definieren Sie die Fokusvisuals.

Gilt für:

Weitere Informationen