2014-05-23 63 views
4

我写了一个小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> 

InfoIconIsTabStopFocusable明确设置为false。但是,这并不阻止获得焦点的控制,同时通过控制Tab键:

Stolen focus

我怎样才能防止获取焦点CustomControl的一部分?

+1

你的InfoIcon控件包含子元素(你提到的文本框?),它仍然是可以聚焦的。将这些元素的Focusable明确设置为false,或将它们的Focusable属性绑定到InfoIcon.Focusable属性...(同样适用于IsTabStop) – elgonzo

+0

你试过了吗? [set KeyboardNavigation.TabNavigation =“None”](http://stackoverflow.com/a/7758370/352101) – Bolu

+0

@elgonzo确实有一个ToggleButton。这很奇怪,在父元素上设置此值不会影响子项的行为... – Spook

回答

2

尝试在DockPanelInfoIcon本身中设置KeyboardNavigation.TabNavigation="None"

+0

出于兴趣,你最终把它放在哪个'Control'上? – weston