有没有办法让 UserControl 捕捉到其任何子控件的焦点变化?
我TabControl
有一个在每个选项卡上都有一个 UserControl 的。在选项卡之间切换时,我试图将注意力集中在控制项上。
有没有办法让 UserControl 捕捉到其任何子控件的焦点变化?
我TabControl
有一个在每个选项卡上都有一个 UserControl 的。在选项卡之间切换时,我试图将注意力集中在控制项上。
您可以订阅用户LostFocus
控件中每个控件的事件。
要自动执行此操作,您可以订阅 on initialize 并循环遍历子项。但是,您要么需要直接了解您的孩子(因为它们是成员变量),要么您的用户控件必须是/包含 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);
}