0
是否有一種方法讓UserControl在其任何子控件上捕捉焦點變化?WPF Catch焦點變化的兒童控制
我有一個TabControl
它在每個選項卡上都有一個UserControl。我試圖在標籤之間切換時保持對控件項目的關注。
是否有一種方法讓UserControl在其任何子控件上捕捉焦點變化?WPF Catch焦點變化的兒童控制
我有一個TabControl
它在每個選項卡上都有一個UserControl。我試圖在標籤之間切換時保持對控件項目的關注。
您可以訂閱usercontrol中每個控件的LostFocus
事件。
要自動執行此操作,您可以訂閱初始化並循環遍歷子項。但是,您需要直接瞭解您的孩子(就像他們是成員變量一樣),否則您的用戶控件必須包含ItemsControl。
如果您包含模板中的項目控件,則必須使用分配零件的名稱搜索模板控件。
<ControlTemplate>
<Grid x:Name="PART_ChildrenContainer">
<ItemsPresenter> <!--This will contain your children-->
</Grid>
</ControlTemplate>
然後你必須做以下事情。
var grid = (Grid)this.Template.FindName("PART_ChildrenContainer",...);
foreach(var child in grid.Children)
{
child.PreviewLostKeyboardFocus +=
new System.Windows.Input.KeyboardFocusChangedEventHandler(eventHandler);
}
謝謝,這是一個很好的解決方案。然而,在我的頭上敲了很長一段時間後,我發現我認爲是最好的解決方案。那是重寫OnPreviewLostKeyboardFocus方法。 – FodderZone 2013-02-14 18:25:09