/// <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();
            }
        }
示例#2
0
        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]);
            }
        }
示例#3
0
 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;
     }
 }
示例#4
0
        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);
        }
示例#5
0
        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();
                }
            }
        }
示例#6
0
        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);
        }