在我目前正在处理的控件中,当一个项目获得焦点时,默认焦点矩形跨越整个行及其所有可见的子项目。我知道如何隐藏它。但是当项目具有键盘焦点时,我仍然想要这样的焦点指示器。我已经阅读了有关 IsKeyboardFocused 属性的信息,但是当鼠标单击该项目时也是如此。所以我想我需要以某种方式使用 FocusVisualStyle。但我不知道怎么做。
这是默认焦点的样子:
这就是它应该的样子:
这是我的控件模板的 XAML 代码:
<Border ...>
<ContentPresenter FocusManager.IsFocusScope="True"
Content="{TemplateBinding HeaderedContentControl.Header}"
ContentTemplate="{TemplateBinding HeaderedContentControl.HeaderTemplate}"
ContentStringFormat="{TemplateBinding HeaderedItemsControl.HeaderStringFormat}"
ContentSource="Header"
Name="PART_Header" .../>
</Border>
<!-- Additional border glare inside the item -->
<Border BorderThickness="1" BorderBrush="#80ffffff" Margin="1"
SnapsToDevicePixels="True" CornerRadius="2"/>
<!-- Focus rectangle inside the item -->
<Rectangle StrokeDashArray="1 2" StrokeThickness="1" Stroke="Black"
SnapsToDevicePixels="True" Margin="2"
Visibility="Hidden" Name="FocusRectangle"
FocusVisualStyle="{StaticResource FocusStyle}"/>
我的 XAML 中已经有一个默认不可见的焦点矩形。使用 FocusVisualStyle 或任何东西,它应该是可见的。但我没能做到。它要么在任何焦点处可见,要么从不可见。