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
. - В группе определите
FocusStates
VisualState для каждого изFocused
,Unfocused
иPointerFocused
. - Определите визуальные элементы фокуса.