/// <summary> /// Called when the submenu's <see cref="Popup"/> is opened. /// </summary> /// <param name="sender">The event sender.</param> /// <param name="e">The event args.</param> private void PopupOpened(object sender, EventArgs e) { var selected = SelectedIndex; if (selected != -1) { var container = ItemContainerGenerator.ContainerFromIndex(selected); container?.Focus(); } }
private void OnDisplayMemberPathChanged(string oldPath, string newPath) { // refresh the display member template. this.displayMemberTemplate = null; var newTemplate = this.DisplayMemberTemplate; int count = this.Items.Count; for (int i = 0; i < count; i++) { this.UpdateContentTemplateOnContainer(ItemContainerGenerator.ContainerFromIndex(i), this.Items[i]); } }
private void UpdateSelectedContent() { if (SelectedIndex == -1) { SelectedContent = SelectedContentTemplate = null; } else { var container = SelectedItem as IContentControl ?? ItemContainerGenerator.ContainerFromIndex(SelectedIndex) as IContentControl; SelectedContentTemplate = container?.ContentTemplate; SelectedContent = container?.Content; } }
protected override void OnContainersMaterialized(ItemContainerEventArgs e) { base.OnContainersMaterialized(e); if (SelectedContent != null || SelectedIndex == -1) { return; } var container = (TabItem)ItemContainerGenerator.ContainerFromIndex(SelectedIndex); if (container == null) { return; } UpdateSelectedContent(container); }
private void TryFocusSelectedItem() { var selectedIndex = SelectedIndex; if (IsDropDownOpen && selectedIndex != -1) { var container = ItemContainerGenerator.ContainerFromIndex(selectedIndex); if (container == null && SelectedIndex != -1) { ScrollIntoView(Selection.SelectedIndex); container = ItemContainerGenerator.ContainerFromIndex(selectedIndex); } if (container != null && CanFocus(container)) { container.Focus(); } } }
private void UpdateSelectedContent(AvaloniaPropertyChangedEventArgs e) { var index = (int)e.NewValue; if (index == -1) { SelectedContentTemplate = null; SelectedContent = null; return; } var container = (TabItem)ItemContainerGenerator.ContainerFromIndex(index); if (container == null) { return; } UpdateSelectedContent(container); }