Browse Source

Defer TreeViewItem creation to TreeView.

Fixes nodes not being selected correctly when parent node is expanded.
pull/10785/head
Steven Kirk 4 years ago
parent
commit
c2b83d9909
  1. 19
      src/Avalonia.Controls/TreeViewItem.cs

19
src/Avalonia.Controls/TreeViewItem.cs

@ -90,8 +90,20 @@ namespace Avalonia.Controls
internal TreeView? TreeViewOwner => _treeView;
protected internal override Control CreateContainerForItemOverride() => new TreeViewItem();
protected internal override bool IsItemItsOwnContainerOverride(Control item) => item is TreeViewItem;
protected internal override Control CreateContainerForItemOverride()
{
return EnsureTreeView().CreateContainerForItemOverride();
}
protected internal override bool IsItemItsOwnContainerOverride(Control item)
{
return EnsureTreeView().IsItemItsOwnContainerOverride(item);
}
protected internal override void PrepareContainerForItemOverride(Control container, object? item, int index)
{
EnsureTreeView().PrepareContainerForItemOverride(container, item, index);
}
/// <inheritdoc/>
protected override void OnAttachedToLogicalTree(LogicalTreeAttachmentEventArgs e)
@ -283,6 +295,9 @@ namespace Avalonia.Controls
return logical != null ? result : @default;
}
private TreeView EnsureTreeView() => _treeView ??
throw new InvalidOperationException("The TreeViewItem is not part of a TreeView.");
private void HeaderDoubleTapped(object? sender, TappedEventArgs e)
{
OnHeaderDoubleTapped(e);

Loading…
Cancel
Save