私が現在取り組んでいるコントロールでは、アイテムがフォーカスされている場合、デフォルトのフォーカス四角形は行全体とそのすべての表示可能な子アイテムにまたがっています。私はそれを隠す方法を知っています。しかし、アイテムにキーボード フォーカスがある場合は、そのようなフォーカス インジケーターが必要です。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 などを使用して、可視にする必要があります。しかし、私はそれをすることができませんでした。どの焦点でも見えるか、まったく見えないかのどちらかです。