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)
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)
cc.SetValue(ContentControl.ContentTemplateProperty, it, BindingPriority.Template);
cc.ContentTemplate = it;
}
else if (container is ContentPresenter p)
{
p.SetValue(ContentPresenter.ContentProperty, item, BindingPriority.Template);
p.Content = item;
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>

10
src/Avalonia.Controls/TabControl.cs

@ -171,7 +171,15 @@ namespace Avalonia.Controls
protected internal override void PrepareContainerForItemOverride(Control element, object? item, int 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)

Loading…
Cancel
Save