/// <inheritdoc/> public void NotifyFocusableComponentInitialized(IFocusableComponent focusableComponent) { if (focusableComponent == null) { return; } if (!FocusableComponents.Contains(focusableComponent)) { FocusableComponents.Add(focusableComponent); } }
/// <inheritdoc/> public void NotifyFocusableComponentRemoved(IFocusableComponent focusableComponent) { if (focusableComponent == null) { return; } if (FocusableComponents.Contains(focusableComponent)) { FocusableComponents.Remove(focusableComponent); } }
/// <summary> /// Handles the focus of the nested component. /// </summary> /// <returns></returns> protected Task HandleFocusableComponent() { // only one component can be focused if (HasFocusableComponents) { var firstFocusableComponent = FocusableComponents.FirstOrDefault(x => x.Autofocus); // take first component if Autofocus is unspecified if (firstFocusableComponent == null) { firstFocusableComponent = FocusableComponents.FirstOrDefault(); } if (firstFocusableComponent != null) { return(firstFocusableComponent.Focus()); } } return(Task.CompletedTask); }