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
Значение свойства
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. - Определите визуальные элементы фокуса.