2014-05-23 92 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