UIElement.UseSystemFocusVisuals 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置一个值,该值指示控件是使用由系统绘制的焦点视觉对象,还是使用控件模板中定义的焦点视觉对象。
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。 如果控件使用 ControlTemplate 中定义的焦点视觉对象,则为 False。
默认值为 false (请参阅 备注) 。
示例
此示例演示一个为 Button 定义自定义焦点视觉对象的 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 框架控件在其 ControlTemplate
中将此属性设置为 true,并使用系统绘制的焦点视觉对象。
若要为控件定义自定义焦点视觉对象,需要提供自定义 ControlTemplate。 在 中 ControlTemplate
,执行以下操作:
- 如果要修改默认 的 ControlTemplate,请务必将 UseSystemFocusVisuals 属性设置为 false 以关闭系统焦点视觉对象。 设置为 false 时,将调用 VisualStateManager 中的焦点状态。
- 为
FocusStates
定义 VisualStateGroup。 - 在
FocusStates
组中,为每个Focused
、Unfocused
和PointerFocused
定义一个 VisualState。 - 定义焦点视觉对象。