Browse Source

Register TabControl with ContentControlMixin.

`ContentControlMixin` implements a number of behaviors related to logical children that controls that have a `ContentPresenter` need in order to function correctly.

Also renamed `PART_Content` to `PART_SelectedContentHost` to match WPF

Fixes #2191
pull/2218/head
Steven Kirk 8 years ago
parent
commit
3d578464c6
  1. 2
      samples/ControlCatalog/SideBar.xaml
  2. 7
      src/Avalonia.Controls/TabControl.cs
  3. 2
      src/Avalonia.Themes.Default/TabControl.xaml
  4. 2
      tests/Avalonia.Controls.UnitTests/TabControlTests.cs

2
samples/ControlCatalog/SideBar.xaml

@ -26,7 +26,7 @@
</ItemsPresenter>
</ScrollViewer>
<ContentPresenter
Name="PART_Content"
Name="PART_SelectedContentHost"
Margin="{TemplateBinding Padding}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"

7
src/Avalonia.Controls/TabControl.cs

@ -2,6 +2,7 @@
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using Avalonia.Controls.Generators;
using Avalonia.Controls.Mixins;
using Avalonia.Controls.Presenters;
using Avalonia.Controls.Primitives;
using Avalonia.Controls.Templates;
@ -65,6 +66,10 @@ namespace Avalonia.Controls
SelectionModeProperty.OverrideDefaultValue<TabControl>(SelectionMode.AlwaysSelected);
ItemsPanelProperty.OverrideDefaultValue<TabControl>(DefaultPanel);
AffectsMeasure<TabControl>(TabStripPlacementProperty);
ContentControlMixin.Attach<TabControl>(
SelectedContentProperty,
x => x.LogicalChildren,
"PART_SelectedContentHost");
}
/// <summary>
@ -142,7 +147,7 @@ namespace Avalonia.Controls
ItemsPresenterPart = e.NameScope.Get<ItemsPresenter>("PART_ItemsPresenter");
ContentPart = e.NameScope.Get<ContentPresenter>("PART_Content");
ContentPart = e.NameScope.Get<ContentPresenter>("PART_SelectedContentHost");
}
/// <inheritdoc/>

2
src/Avalonia.Themes.Default/TabControl.xaml

@ -18,7 +18,7 @@
MemberSelector="{TemplateBinding MemberSelector}" >
</ItemsPresenter>
<ContentPresenter
Name="PART_Content"
Name="PART_SelectedContentHost"
Margin="{TemplateBinding Padding}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"

2
tests/Avalonia.Controls.UnitTests/TabControlTests.cs

@ -302,7 +302,7 @@ namespace Avalonia.Controls.UnitTests
},
new ContentPresenter
{
Name = "PART_Content",
Name = "PART_SelectedContentHost",
[!ContentPresenter.ContentProperty] = parent[!TabControl.SelectedContentProperty],
[!ContentPresenter.ContentTemplateProperty] = parent[!TabControl.SelectedContentTemplateProperty],
}

Loading…
Cancel
Save