C# 如何防止自定义控件的元素获得焦点?

C# 如何防止自定义控件的元素获得焦点?,c#,wpf,focus,custom-controls,C#,Wpf,Focus,Custom Controls,我写了一个小WPF控件——一个文本框,显示小(I)图标,允许显示弹出式帮助。控件模板的相关部分如下所示: <DockPanel> <local:InfoIcon DockPanel.Dock="Right" Margin="2" VerticalAlignment="Center" HelpContent="{TemplateBinding InfoTooltip}" Focusable="False" IsTabStop="F

我写了一个小WPF控件——一个文本框,显示小(I)图标,允许显示弹出式帮助。控件模板的相关部分如下所示:

<DockPanel>
    <local:InfoIcon DockPanel.Dock="Right" Margin="2" VerticalAlignment="Center" HelpContent="{TemplateBinding InfoTooltip}" 
                    Focusable="False" IsTabStop="False"/>
    <ScrollViewer x:Name="PART_ContentHost" Margin="2" VerticalAlignment="Center"/>
</DockPanel>

InfoIcon
IsTabStop
Focusable
显式设置为false。但这并不妨碍该控件在切换控件时获得焦点:


如何防止CustomControl的这一部分获得焦点?

尝试在
DockPanel
中设置
KeyboardNavigation.TabNavigation=“None”
,或者设置
InfoIcon
本身。

您的InfoIcon控件包含仍然可以聚焦的子元素(您提到的文本框?)。要么将这些元素的Focusable显式设置为false,要么将它们的Focusable属性绑定到InfoIcon.Focusable属性。。。(同样适用于IsTabStop)您尝试过这个吗@埃尔贡佐里面确实有一个按钮。奇怪的是,在父元素上设置此值不会影响子项的行为…@Bolu更好的是,它实际上会影响子项。@elgonzo,这是一个很好的观点。不过,KeyboardNavigation.TabNavigation似乎以我希望的方式解决了这个问题。出于兴趣,您最后使用了哪个
Control