Browse Source

Setup TabItems.

pull/9677/head
Steven Kirk 4 years ago
parent
commit
8bb1349785
  1. 25
      src/Avalonia.Controls/ItemsControl.cs
  2. 10
      src/Avalonia.Controls/TabControl.cs

25
src/Avalonia.Controls/ItemsControl.cs

@ -281,21 +281,30 @@ namespace Avalonia.Controls
if (container == item) if (container == item)
return; return;
if (container is ContentControl cc) if (container is HeaderedContentControl hcc)
{ {
cc.SetValue(ContentControl.ContentProperty, item, BindingPriority.Template); hcc.Content = item;
if (item is IHeadered headered)
hcc.Header = headered.Header;
else if (item is not Visual)
hcc.Header = item;
if (ItemTemplate is { } it)
hcc.HeaderTemplate = it;
}
else if (container is ContentControl cc)
{
cc.Content = item;
if (ItemTemplate is { } it) if (ItemTemplate is { } it)
cc.SetValue(ContentControl.ContentTemplateProperty, it, BindingPriority.Template); cc.ContentTemplate = it;
} }
else if (container is ContentPresenter p) else if (container is ContentPresenter p)
{ {
p.SetValue(ContentPresenter.ContentProperty, item, BindingPriority.Template); p.Content = item;
if (ItemTemplate is { } it) if (ItemTemplate is { } it)
p.SetValue(ContentPresenter.ContentTemplateProperty, it, BindingPriority.Template); p.ContentTemplate = it;
} }
if (ItemContainerTheme is not null)
container.SetValue(ThemeProperty, ItemContainerTheme, BindingPriority.Template);
} }
/// <summary> /// <summary>

10
src/Avalonia.Controls/TabControl.cs

@ -171,7 +171,15 @@ namespace Avalonia.Controls
protected internal override void PrepareContainerForItemOverride(Control element, object? item, int index) protected internal override void PrepareContainerForItemOverride(Control element, object? item, int index)
{ {
base.PrepareContainerForItemOverride(element, item, index); base.PrepareContainerForItemOverride(element, item, index);
UpdateSelectedContent();
if (element is HeaderedContentControl hcc && ContentTemplate is { } ct)
hcc.ContentTemplate = ct;
if (index == SelectedIndex && element is ContentControl container)
{
SelectedContentTemplate = container.ContentTemplate;
SelectedContent = container.Content;
}
} }
protected override void ContainerIndexChangedOverride(Control container, int oldIndex, int newIndex) protected override void ContainerIndexChangedOverride(Control container, int oldIndex, int newIndex)

Loading…
Cancel
Save