此示例演示如何使用 FocusVisualStyle 属性在资源中创建焦点视觉样式并将样式应用于控件。
示例:
以下示例定义了一个样式,该样式创建了额外的控件合成,仅在该控件在用户界面(UI)中获得键盘焦点时适用。 这是通过定义具有 ControlTemplate的样式来实现的,然后在设置 FocusVisualStyle 属性时将该样式引用为资源。
与边框相同的外部矩形放置在矩形区域之外。 除非另有修改,否则调整样式大小时将使用应用焦点视觉样式的矩形控件的 ActualHeight 和 ActualWidth。 本示例设置 Margin 的负值,以使边框在焦点控件外略显。
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>
<Page.Resources>
<Style x:Key="MyFocusVisual">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle Margin="-2" StrokeThickness="1" Stroke="Red" StrokeDashArray="1 2"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Page.Resources>
<StackPanel Background="Ivory" Orientation="Horizontal">
<Canvas Width="10"/>
<Button Width="100" Height="30" FocusVisualStyle="{DynamicResource MyFocusVisual}">
Focus Here</Button>
<Canvas Width="100"/>
<Button Width="100" Height="30" FocusVisualStyle="{DynamicResource MyFocusVisual}">
Focus Here</Button>
</StackPanel>
</Page>
FocusVisualStyle 是对任何来自显式样式或主题样式的控件模板样式的补充。仍然可以使用 ControlTemplate 创建控件的主要样式,并将该样式设置为 Style 属性。
焦点视觉样式应在主题或 UI 中一致地使用,而不是为每个可聚焦元素使用不同的样式。 有关详细信息,请参阅为控件中的焦点设置样式以及 FocusVisualStyle。