/// <summary> /// Creates an <see cref="ItemVirtualizer"/> based on an item presenter's /// <see cref="ItemVirtualizationMode"/>. /// </summary> /// <param name="owner">The items presenter.</param> /// <returns>An <see cref="ItemVirtualizer"/>.</returns> public static ItemVirtualizer Create(ItemsPresenter owner) { var virtualizingPanel = owner.Panel as IVirtualizingPanel; var scrollable = (ILogicalScrollable)owner; ItemVirtualizer result = null; if (virtualizingPanel != null && scrollable.InvalidateScroll != null) { switch (owner.VirtualizationMode) { case ItemVirtualizationMode.Simple: result = new ItemVirtualizerSimple(owner); break; } } if (result == null) { result = new ItemVirtualizerNone(owner); } if (virtualizingPanel != null) { virtualizingPanel.Controller = result; } return(result); }
/// <inheritdoc/> protected override void PanelCreated(IPanel panel) { Virtualizer?.Dispose(); Virtualizer = ItemVirtualizer.Create(this); ((ILogicalScrollable)this).InvalidateScroll?.Invoke(); KeyboardNavigation.SetTabNavigation( (InputElement)Panel, KeyboardNavigation.GetTabNavigation(this)); }
/// <inheritdoc/> protected override void PanelCreated(IPanel panel) { _virtualizer = ItemVirtualizer.Create(this); ((ILogicalScrollable)this).InvalidateScroll?.Invoke(); if (!Panel.IsSet(KeyboardNavigation.DirectionalNavigationProperty)) { KeyboardNavigation.SetDirectionalNavigation( (InputElement)Panel, KeyboardNavigationMode.Contained); } KeyboardNavigation.SetTabNavigation( (InputElement)Panel, KeyboardNavigation.GetTabNavigation(this)); }
private void VirtualizationModeChanged(AvaloniaPropertyChangedEventArgs e) { _virtualizer?.Dispose(); _virtualizer = ItemVirtualizer.Create(this); ((ILogicalScrollable)this).InvalidateScroll?.Invoke(); }