private void FocusOnPosition(Point position) { if (root is IInputElementContainer) { Focused = null; IInputElementContainer container = (IInputElementContainer)root; FocusOnPositionInContainer(position, container); } }
private void FocusOnPositionInContainer(Point position, IInputElementContainer container) { if (container.Bounds.Contains(position)) { Focused = container; foreach (IInputElement child in container.Children.Reverse()) { if (child.Bounds.Contains(position)) { if (child is IInputElementContainer) { if (child.IsFocusable) { Focused = child; } FocusOnPositionInContainer(position, (IInputElementContainer)child); if (Focused != null) { break; } } else { if (child.IsFocusable) { Focused = child; } break; } } } } }