0
UserControl이 자식 컨트롤 중 하나에서 포커스 변경을 잡을 수있는 방법이 있습니까?WPF 자식 컨트롤의 포커스 변경
TabControl
에는 각 탭마다 UserControl이 있습니다. 탭간에 전환 할 때 컨트롤 항목에 초점을 유지하려고합니다.
UserControl이 자식 컨트롤 중 하나에서 포커스 변경을 잡을 수있는 방법이 있습니까?WPF 자식 컨트롤의 포커스 변경
TabControl
에는 각 탭마다 UserControl이 있습니다. 탭간에 전환 할 때 컨트롤 항목에 초점을 유지하려고합니다.
사용자 컨트롤 내에서 각 컨트롤의 LostFocus
이벤트를 구독 할 수 있습니다.
이 작업을 자동으로 수행하려면에 on을 (를) 등록하고 자식을 반복합니다. 그러나 멤버 변수와 마찬가지로 자식을 직접 알아야하거나 사용자 정의 컨트롤에 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