UIElement.UseSystemFocusVisuals Свойство

Определение

Возвращает или задает значение, указывающее, использует ли элемент управления визуальные элементы фокуса, нарисованные системой, или визуальные элементы фокуса, определенные в шаблоне элемента управления.

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

Значение свойства

Boolean

bool

Значение true, если элемент управления использует визуальные элементы фокуса, нарисованные системой. False, если элемент управления использует визуальные элементы фокуса, определенные в ControlTemplate.

Значение по умолчанию — false (см. примечания).

Примеры

В этом примере показан элемент ControlTemplate , определяющий пользовательские визуальные элементы фокуса для кнопки.

Некоторые элементы шаблона элемента управления не отображаются, чтобы сделать соответствующие части более понятными. Дополнительные сведения см. в статье Стили 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>

Комментарии

Это свойство по умолчанию имеет значение false, поэтому настраиваемая панель ControlTemplate , определяющая собственные визуальные элементы фокуса, работает должным образом. Однако все элементы управления платформы XAML присваивают этому свойству значение true и ControlTemplate используют системные визуальные элементы фокуса.

Чтобы определить пользовательские визуальные элементы фокуса для элемента управления, необходимо предоставить пользовательский ControlTemplate. В сделайте ControlTemplateследующее:

  • Если вы изменяете элемент ControlTemplate по умолчанию, обязательно установите для свойства UseSystemFocusVisuals значение false, чтобы отключить визуальные элементы фокуса системы. Если задано значение false, вызываются состояния фокуса в VisualStateManager .
  • Определите VisualStateGroup для FocusStates.
  • В группе определите FocusStatesVisualState для каждого из Focused, Unfocusedи PointerFocused.
  • Определите визуальные элементы фокуса.

Применяется к